diff --git a/.github/workflows/master-pr-build.yml b/.github/workflows/master-pr-build.yml
index ec6380c..85ac688 100644
--- a/.github/workflows/master-pr-build.yml
+++ b/.github/workflows/master-pr-build.yml
@@ -38,6 +38,6 @@
         # second one source check and install :camel-kafka-connector-generator-maven-plugin. This is needed to add maven plugin metadata to it,
         # third command source check everything else but :camel-kafka-connector-generator-maven-plugin
         run: |
-          ./mvnw -V --no-transfer-progress -DskipTests --projects org.apache.camel.kafkaconnector:camel-buildtools clean install
+          ./mvnw -V --no-transfer-progress -DskipTests --projects org.apache.camel.kafkaconnector:parent,org.apache.camel.kafkaconnector:camel-buildtools clean install
           ./mvnw -V --no-transfer-progress --projects org.apache.camel.kafkaconnector:camel-kafka-connector-generator-maven-plugin -Dcheckstyle.failOnViolation=true -Psourcecheck -DskipTests clean install
           ./mvnw -V --no-transfer-progress --projects '!org.apache.camel.kafkaconnector:camel-kafka-connector-generator-maven-plugin' -Dcheckstyle.failOnViolation=true -Psourcecheck -DskipIntegrationTests=false clean test
diff --git a/.github/workflows/master-push-build.yml b/.github/workflows/master-push-build.yml
index acee071..8762e69 100644
--- a/.github/workflows/master-push-build.yml
+++ b/.github/workflows/master-push-build.yml
@@ -38,6 +38,6 @@
         # second one source check and install :camel-kafka-connector-generator-maven-plugin. This is needed to add maven plugin metadata to it,
         # third command source check everything else but :camel-kafka-connector-generator-maven-plugin
         run: |
-            ./mvnw -V --no-transfer-progress -DskipTests --projects org.apache.camel.kafkaconnector:camel-buildtools clean install
+            ./mvnw -V --no-transfer-progress -DskipTests --projects org.apache.camel.kafkaconnector:parent,org.apache.camel.kafkaconnector:camel-buildtools clean install
             ./mvnw -V --no-transfer-progress --projects org.apache.camel.kafkaconnector:camel-kafka-connector-generator-maven-plugin -Dcheckstyle.failOnViolation=true -Psourcecheck -DskipTests clean install
             ./mvnw -V --no-transfer-progress --projects '!org.apache.camel.kafkaconnector:camel-kafka-connector-generator-maven-plugin' -Dcheckstyle.failOnViolation=true -Psourcecheck -DskipIntegrationTests=false clean test
diff --git a/KEYS b/KEYS
index 5099276..98fc48c 100644
--- a/KEYS
+++ b/KEYS
@@ -1771,3 +1771,88 @@
 Bq6lxl6uAA==
 =f/Ot
 -----END PGP PUBLIC KEY BLOCK-----
+pub   rsa4096 2019-04-18 [SC] [expires: 2029-04-15]
+      60C1443BDA990159A701A5D2EE5630CAB51A767C
+uid           [ultimate] Andrea Tarocchi (a.k.a. valdar) <andrea.tarocchi@gmail.com>
+uid           [ultimate] Andrea Tarocchi (a.k.a. valdar) <valdar@apache.org>
+sub   rsa4096 2019-04-18 [E] [expires: 2029-04-15]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFy4hzoBEADF40PFGiiuqO7sNoGOky7ELE02UW8NI9dy8haEruXI/H/THl4M
+UcTSxyRTR0U9UwjLZ8IkP51mFujs6CQQJhbKSgowF5yUReyvBqyXVI21qRiwiUpF
+BPs8YRgEa507TAWTFaNKna497vbFrLh4wiNwoLrwYHpfm07XSq49I2c7jjO9TUNh
+wm28GepYzZYF1U1Eeal/013ySowiA3vIW5Tdq6VJKypJAq7BXAWbTcIq8TLHgRDR
+z5WQLYTa0r9GfrCO5rD0hWL3Wqfk1b03xerDVQHxAOJXaeeDRLI5tqx9UJMBltU2
+dP0QTFv6p3qwz9kGeF/5WdjlU17qJ8ktlEl4abxomxtKCLkSRNGsOG6w2WQYREZr
+Hdq9EzaJgvpn0a2bsVy68oq/RfJY34q8CGngQR3/E7n0qLg0IjkC01qsHKHIrbnz
+/G7xOT+EoeETCLhx015wh33BiiPYU4GTjctPArCX+L1LCebzFTWsftriNsF2ouFP
+CtHgdPbk/9FB+Cg6vLcye0/W+QWVoda7Ooen2+fZ6x4rdIwaoa29TYrd/d8CjVJs
+DKpO7kSZ9If9y3bBlGE09t7Y1CN8u+mbydz6FFBoACcw+Xr7SMSW1ufcaj9ZU4em
+VSbT/YvunjFayxqGo+pW2cSjnFlo6zKLgGVCO6aOpA/T51D0CSZ6pQqKjwARAQAB
+tDNBbmRyZWEgVGFyb2NjaGkgKGEuay5hLiB2YWxkYXIpIDx2YWxkYXJAYXBhY2hl
+Lm9yZz6JAlQEEwEIAD4WIQRgwUQ72pkBWacBpdLuVjDKtRp2fAUCXLiShAIbAwUJ
+EswDAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDuVjDKtRp2fHjLD/90JmLn
+87lWuzx89DyIEm/VlxK2RJajpxG8/JR3xSryrSzNR2+/L5DKi/xXsM3zKhLjbPI5
+5yhO/l6k6i7yTcx0CsO/l/AAn/b2wgDqbL5po2ghkUYhSJhPhwNyVVZPCfv1MHmf
+PDKfAcgptOXCl7mGGDmFoeGqIiPGiCgSIn9xeB/JY+WpeiQhiScrfZWGDU6r4NRS
+3E0sLXSqsJkvhEwCqP1hL5pK5aVUURSsNOr027DNz94Njzgl56MbkOH0eWopM+RG
+9CzjZnT0C9jBTvHpWSidoXmYjVA/XLHpeTppOhfJJcMWY36ECjHaPnZFIufC3jkH
+7dzV97z3GS3W8snyFh7259Hq0PlgGU+u/LDBPz9058khdHpI6pqgEP2fYe8OQnp1
+cSPZx+q2fbLkBPecDiRmrem7Hzu3m9J7gRDCVfTXH3BRND095qPIJITbkPtBEtqN
+Wt0300rDedrC6cVJ7gEREl8xi3JsRN8RY7eY/yjOBJzqm3++1BDmFaUbvleuXJUO
+j3+xdf6vta/GPStX4hLDSUY9vpgNXfLbwDkMF3MBuO9KfQ6BkeWnMQQOD+aZR2t7
+5UCXIMDEFVbGYjspS75WJKsI7zND9FKu8YM9TCiDgWNYL76s0loB4MSXJn37/g5b
+Wm51nCYauNOhdDgsDy3rfKwOS8UOMoeAWoCTXrQ7QW5kcmVhIFRhcm9jY2hpIChh
+LmsuYS4gdmFsZGFyKSA8YW5kcmVhLnRhcm9jY2hpQGdtYWlsLmNvbT6JAlcEEwEI
+AEECGwMFCRLMAwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRgwUQ72pkBWacB
+pdLuVjDKtRp2fAUCXOGyhQIZAQAKCRDuVjDKtRp2fAcqD/0bDJnBNbODI9MJ0Bhw
+MFV3O8pZ/vQNy4ZTPkDBMCrIfeP5EqTL/pCDpzmIpXCEgYsbe0OEBGOmavDMVG29
+zIcHaGATbxgCrizwelBAVtHIb4zagoIhPWIjxSl9Clg/go0JruDRrvC+t7RfdY68
+quBfEcMcVoned6PMPSl3LbbRECtlbTgju5IifMXSUdH/IPxDGU/1/cDJwlSZ2wnU
+d5LBkE+mdMj/kL1jkz4kB8jZfH0KEi1Nqflw/PoPeRhHE9uBomOegwuNPFp3jc5r
+y5KbdbLnFPyRas5XsXrthvTOg+m2AHiF/BEdXw8VRYSrezzjKvnxThXiD+KME0Yc
+nAoHhXPr0xR4nkpke5mRQo6EorbOY0nto/eHvUBmi2EXoIfodehB+GMOBxaSAwfK
+GIG5ATAD4AVWFpYWzXXajGP7rfvnEyAallPNzPFdDQpHW17Y0yC68IGh+fNjeC2E
+BWiVKLJHXWJCsoHxFkWDEBERKSLWN53d2FHxLCDX2Pl7VQzLCEpTWFhPXdxg2NKs
+xk3yveYunOSMDoCH75OMQLzJyPOdd7h47cCa5Da/X7zV6W2Ro9ahhUEmoo/1pE8J
+Xx94wk+ozOcweBhVIkat1+TH7dMJ+VnUXHOzpuXvoVPQNZuk3Mf76nJ4eGu78vEX
+Kjvd9YMIhl9y4alCrwGlssDiRIkCVAQTAQgAPhYhBGDBRDvamQFZpwGl0u5WMMq1
+GnZ8BQJcuIc6AhsDBQkSzAMABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEO5W
+MMq1GnZ8TYAQALsBX+R+wa6UJKXCEn6tfhJ2M4Elyj0+iQSrTk4NfcN8XrrJBa9p
+wvuc2Bb1/NYQCZs3Gi5xGwMud+bsupi1CLn8wxaMcZl2QqTEIGjKIVMqD/YXmIw9
+ICr+8Cx0dnFB3BRgbeO9vIViBJk2Z8THhXt+RwQfsBdrRvSo0PWw8/o3iMiVphlv
+O44k6/e+kCxFmWnOfDRTXGP8ctALWBRMWWwSExIHWpzMQ8f63gV2Wo7ILMDXkhQt
+mz4GgLe9WSpSQFdnm0C9/o+3Ctt1Fywxu43p5rCZ1uKCcluQN18NFQE3ZiShgNk6
+TQ5DEeN4ujdaLqKtTsb5pvkzLNS6yXZW1Zc1wX3UZ2ar4DRxIBqLGva8bo3qdT64
+dxdbkOwyY2PvjKMEjXTVVch8D9sz7m4XZncHZ89dnQJw4h/D5Wb8r1PacrjHHwVT
+lKsHjfjYYmBbXeDr5ZnJ2QLNglNmjPTAdXaR/Qabah+QQlRodFEqirhGj0Cokq5K
+moBXNvUNoVR6qW/EWQL5PL+8VFeTClCAqGdi1X5mdh33ESjwiItwsn7CU3xEYDFk
+c7sVMaM1batixC9pqcgD7cwVOXfjoVO92YLCOwamuMtM8g+BsaPBMF3asab50fiZ
+9utItiavlTY+j+LYdFyHZq0e75NuXrwyYqFTcgpRgj06L4jkU18TxMV6uQINBFy4
+hzoBEACzRgUA2x1wCmxyEorJdrWZqhOtpg1pANavoEcIIRlpSvMKJrN7biF7N0Ws
+fy68T0rOlNyDxrI42R8c8BBwau4yBODd9RzTJsD8lTsKdpMNfQXHvmzKm6heXLKr
+hVdjKZSbgCWztAh6T//qHN0f9itlb9k6HmGp9L52jB6cCHdRmSv9Kcp4glryNe0O
+dDoDvNz8aGvnnDmiYpeEFg6gJjLZUDJhkiPiSDyseFrfbm8iojpoyGXHgooOFHJc
+Ei680WkEquYX5svApIqnUJPBUB9/vd7VVs4sLUtY8yEzhQcJnD0hf33g4H/dBQLM
+0i54bJ7/iEGljH0g9SihU+7IodYnaZVYDObUNPBhe+8ExaJeHf+heVaJBn+NaGwx
+B6adRZvXbFRlGLdlOy43ERCnv2pdV17MGri0p356nA0QqeOiFblymy+twrHbIttq
+teU8hlh8xvLlTu4CmbVfpXCZM7L81aFpq11+k0tmgl5YweOM2Wlpb1/ocYuGXC+s
+8PfHraoMfQFRg8uwfrgQrYzmXTXW+G9ibd4WIDrw+vG14EFOH13lmoJ6WEROw3Xx
+y6maCkc5HZ05jwU5bCylAOcoJcwBVLhBtXEyNURHsvmUdwQ9W5nVWDUClGvRjZO+
+MVHzWn2nRMYn1Sg7Njb3XjyWwMO+d26oX0XlLtZkfyD5kt3hGQARAQABiQI8BBgB
+CAAmFiEEYMFEO9qZAVmnAaXS7lYwyrUadnwFAly4hzoCGwwFCRLMAwAACgkQ7lYw
+yrUadnzi1w/9FrTQP6g+GpglDsI3in/koVVMlCjQHfzT6QE6SvjkSHP2RrrwPwAS
+XMDi2nZQ52FbX5+p6kE5nDfr4odrIvHYFK8taK/AjeRUsLF0SjEQjb0zH9L9rMAI
+qFwLmvJpUcnyUE/D+Z+MIx3ImanRrKMMsyQmYu1Eox/vzqJMNXctdde2epdKjSav
+QEmn09FH6wJSekv+QAHeaB4owwTaNjb4WtyElfc29KP+5+FbOjW+TE8l7fC48Hlw
+R41zK93WwFZn/ZPut6nXYXnlKwcRSSsPMkd8AP20sHKnyUBVXD6Pp6eRG5B14WDA
+xq5KyL33Olo5b/9pWl/87r1tJ1Tm8vU3fIS2mCgF88ZVPEKg/V+UUBUwwHeePr4u
+Pbg0lA6wv+WbwEN304/CEA/vOUe4Apop0ThCcGhPIyWWOKIWi/BuSvQzWPVBn9Ag
+poy1CdsEYePMqnMSJs6DAXdbHqWz5iIt0jEr2LsXy8MerZmhCDvujfDbE3zks4Ka
+F1Q2wyBKVeH0aOXeFDBzAw0VO0U3+Sfclv+4AKaVhzMyBQWnupjO9z7I8Co3MIz/
+q2wQHwrFLpCpx0iWn41phD2tIBLmh2hiq0WG2n8DL4KDPQdHs+8g6VxPZI5kJiTl
+TV1LR4CbYHrev6u7lrtbUrWXN0ftS9e21V8tSAESbhQ43ByQvKvE1X8=
+=JjBZ
+-----END PGP PUBLIC KEY BLOCK-----
+
diff --git a/buildingtools/pom.xml b/buildingtools/pom.xml
index 9ccb813..a61d9e2 100644
--- a/buildingtools/pom.xml
+++ b/buildingtools/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.camel.kafkaconnector</groupId>
         <artifactId>parent</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
+        <version>0.2.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/buildingtools/src/main/resources/camel-checkstyle.xml b/buildingtools/src/main/resources/camel-checkstyle.xml
index f699143..6e17b7d 100644
--- a/buildingtools/src/main/resources/camel-checkstyle.xml
+++ b/buildingtools/src/main/resources/camel-checkstyle.xml
@@ -143,9 +143,9 @@
          -->
         <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
         <module name="RedundantImport"/>
-        <!-- When you javadoc {@link } an import is added that checkstyle thinks is unused import.
+
         <module name="UnusedImports"/>
-        -->
+
         <module name="ImportOrder">
             <property name="groups" value="java,javax,org.w3c,org.xml,junit"/>
             <property name="ordered" value="true"/>
diff --git a/connectors/camel-activemq-kafka-connector/pom.xml b/connectors/camel-activemq-kafka-connector/pom.xml
index eb5db72..21dc401 100644
--- a/connectors/camel-activemq-kafka-connector/pom.xml
+++ b/connectors/camel-activemq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-activemq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: activemq</name>
diff --git a/connectors/camel-activemq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-activemq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-activemq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-activemq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-activemq-kafka-connector/src/main/docs/camel-activemq-kafka-sink-connector.adoc b/connectors/camel-activemq-kafka-connector/src/main/docs/camel-activemq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f8a7139
--- /dev/null
+++ b/connectors/camel-activemq-kafka-connector/src/main/docs/camel-activemq-kafka-sink-connector.adoc
@@ -0,0 +1,162 @@
+// kafka-connector options: START
+[[camel-activemq-kafka-connector-sink]]
+= camel-activemq-kafka-connector sink configuration
+
+When using camel-activemq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-activemq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-activemq sink connector supports 136 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryDelay* | Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.formatDateHeadersToIso8601* | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOnTimeoutMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOverride* | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationProperty* | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableTimeToLive* | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message will not expire on the receiver system. See below in section About time to live for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToDestinationSelectorName* | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.brokerURL* | Sets the broker URL to use to connect to ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.configuration* | Configuration of ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.trustAllPackages* | Define if all Java packages are trusted or not (for Java object JMS message types). Notice its not recommended practice to send Java serialized objects over network. Setting this to true can expose security risks, so use this with care. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.usePooledConnection* | Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is true. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useSingleConnection* | Enables or disables whether a Spring SingleConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is false and a pooled connection is used by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.formatDateHeadersTo Iso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyOnTimeoutToMax ConcurrentConsumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToConcurrent Consumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.correlationProperty* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useMessageIDAs CorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.lazyCreateTransaction Manager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-activemq-kafka-connector/src/main/docs/camel-activemq-kafka-source-connector.adoc b/connectors/camel-activemq-kafka-connector/src/main/docs/camel-activemq-kafka-source-connector.adoc
new file mode 100644
index 0000000..442bd11
--- /dev/null
+++ b/connectors/camel-activemq-kafka-connector/src/main/docs/camel-activemq-kafka-source-connector.adoc
@@ -0,0 +1,163 @@
+// kafka-connector options: START
+[[camel-activemq-kafka-connector-source]]
+= camel-activemq-kafka-connector source configuration
+
+When using camel-activemq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-activemq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-activemq source connector supports 137 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyTo* | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDeliveryPersistent* | Specifies whether to use persistent delivery by default for replies. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.selector* | Sets the JMS selector to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use. One of: [Simple] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerLoadingOfProperties* | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerPoisonBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToSameDestination Allowed* | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.brokerURL* | Sets the broker URL to use to connect to ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.configuration* | Configuration of ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.trustAllPackages* | Define if all Java packages are trusted or not (for Java object JMS message types). Notice its not recommended practice to send Java serialized objects over network. Setting this to true can expose security risks, so use this with care. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.usePooledConnection* | Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is true. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useSingleConnection* | Enables or disables whether a Spring SingleConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is false and a pooled connection is used by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.acknowledgementMode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode. For the regular modes, it is preferable to use the acknowledgementModeName instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.acceptMessagesWhile Stopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowReplyManagerQuick Stop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.eagerLoadingOfProperties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerLoadingOfBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useMessageIDAs CorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.lazyCreateTransaction Manager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ahc-kafka-connector/pom.xml b/connectors/camel-ahc-kafka-connector/pom.xml
index 69e11f5..7b72f43 100644
--- a/connectors/camel-ahc-kafka-connector/pom.xml
+++ b/connectors/camel-ahc-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ahc-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ahc</name>
diff --git a/connectors/camel-ahc-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ahc-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ahc-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ahc-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ahc-kafka-connector/src/main/docs/camel-ahc-kafka-sink-connector.adoc b/connectors/camel-ahc-kafka-connector/src/main/docs/camel-ahc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8054f98
--- /dev/null
+++ b/connectors/camel-ahc-kafka-connector/src/main/docs/camel-ahc-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-ahc-kafka-connector-sink]]
+= camel-ahc-kafka-connector sink configuration
+
+When using camel-ahc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ahc-ws-kafka-connector/pom.xml b/connectors/camel-ahc-ws-kafka-connector/pom.xml
index 16b52ab..8e5e368 100644
--- a/connectors/camel-ahc-ws-kafka-connector/pom.xml
+++ b/connectors/camel-ahc-ws-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ahc-ws-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ahc-ws</name>
diff --git a/connectors/camel-ahc-ws-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ahc-ws-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ahc-ws-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ahc-ws-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ahc-ws-kafka-connector/src/main/docs/camel-ahc-ws-kafka-sink-connector.adoc b/connectors/camel-ahc-ws-kafka-connector/src/main/docs/camel-ahc-ws-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9dd71c3
--- /dev/null
+++ b/connectors/camel-ahc-ws-kafka-connector/src/main/docs/camel-ahc-ws-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-ws-kafka-connector-sink]]
+= camel-ahc-ws-kafka-connector sink configuration
+
+When using camel-ahc-ws-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-ws sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ahc-ws-kafka-connector/src/main/docs/camel-ahc-ws-kafka-source-connector.adoc b/connectors/camel-ahc-ws-kafka-connector/src/main/docs/camel-ahc-ws-kafka-source-connector.adoc
new file mode 100644
index 0000000..1d46727
--- /dev/null
+++ b/connectors/camel-ahc-ws-kafka-connector/src/main/docs/camel-ahc-ws-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-ws-kafka-connector-source]]
+= camel-ahc-ws-kafka-connector source configuration
+
+When using camel-ahc-ws-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-ws source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendMessageOnError* | Whether to send an message if the web-socket listener received an error. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ahc-wss-kafka-connector/pom.xml b/connectors/camel-ahc-wss-kafka-connector/pom.xml
index 10109a3..485187c 100644
--- a/connectors/camel-ahc-wss-kafka-connector/pom.xml
+++ b/connectors/camel-ahc-wss-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ahc-wss-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ahc-wss</name>
diff --git a/connectors/camel-ahc-wss-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ahc-wss-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ahc-wss-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ahc-wss-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ahc-wss-kafka-connector/src/main/docs/camel-ahc-wss-kafka-sink-connector.adoc b/connectors/camel-ahc-wss-kafka-connector/src/main/docs/camel-ahc-wss-kafka-sink-connector.adoc
new file mode 100644
index 0000000..af6b03b
--- /dev/null
+++ b/connectors/camel-ahc-wss-kafka-connector/src/main/docs/camel-ahc-wss-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-wss-kafka-connector-sink]]
+= camel-ahc-wss-kafka-connector sink configuration
+
+When using camel-ahc-wss-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-wss-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-wss sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ahc-wss-kafka-connector/src/main/docs/camel-ahc-wss-kafka-source-connector.adoc b/connectors/camel-ahc-wss-kafka-connector/src/main/docs/camel-ahc-wss-kafka-source-connector.adoc
new file mode 100644
index 0000000..e8e197f
--- /dev/null
+++ b/connectors/camel-ahc-wss-kafka-connector/src/main/docs/camel-ahc-wss-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-wss-kafka-connector-source]]
+= camel-ahc-wss-kafka-connector source configuration
+
+When using camel-ahc-wss-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-wss-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-wss source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendMessageOnError* | Whether to send an message if the web-socket listener received an error. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-amqp-kafka-connector/pom.xml b/connectors/camel-amqp-kafka-connector/pom.xml
index 2a568ad..d93c571 100644
--- a/connectors/camel-amqp-kafka-connector/pom.xml
+++ b/connectors/camel-amqp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-amqp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: amqp</name>
diff --git a/connectors/camel-amqp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-amqp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-amqp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-amqp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-amqp-kafka-connector/src/main/docs/camel-amqp-kafka-sink-connector.adoc b/connectors/camel-amqp-kafka-connector/src/main/docs/camel-amqp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e77c76d
--- /dev/null
+++ b/connectors/camel-amqp-kafka-connector/src/main/docs/camel-amqp-kafka-sink-connector.adoc
@@ -0,0 +1,159 @@
+// kafka-connector options: START
+[[camel-amqp-kafka-connector-sink]]
+= camel-amqp-kafka-connector sink configuration
+
+When using camel-amqp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-amqp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-amqp sink connector supports 133 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryDelay* | Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.formatDateHeadersToIso8601* | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOnTimeoutMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOverride* | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationProperty* | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableTimeToLive* | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message will not expire on the receiver system. See below in section About time to live for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToDestinationSelectorName* | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAmqpAnnotations* | Whether to include AMQP annotations when mapping from AMQP to Camel Message. Setting this to true will map AMQP message annotations to message headers. Due to limitations in Apache Qpid JMS API, currently delivery annotations are ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.formatDateHeadersToIso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyOnTimeoutToMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.correlationProperty* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-amqp-kafka-connector/src/main/docs/camel-amqp-kafka-source-connector.adoc b/connectors/camel-amqp-kafka-connector/src/main/docs/camel-amqp-kafka-source-connector.adoc
new file mode 100644
index 0000000..5953b0a
--- /dev/null
+++ b/connectors/camel-amqp-kafka-connector/src/main/docs/camel-amqp-kafka-source-connector.adoc
@@ -0,0 +1,160 @@
+// kafka-connector options: START
+[[camel-amqp-kafka-connector-source]]
+= camel-amqp-kafka-connector source configuration
+
+When using camel-amqp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-amqp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-amqp source connector supports 134 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyTo* | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDeliveryPersistent* | Specifies whether to use persistent delivery by default for replies. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.selector* | Sets the JMS selector to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use. One of: [Simple] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerLoadingOfProperties* | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerPoisonBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToSameDestination Allowed* | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAmqpAnnotations* | Whether to include AMQP annotations when mapping from AMQP to Camel Message. Setting this to true will map AMQP message annotations to message headers. Due to limitations in Apache Qpid JMS API, currently delivery annotations are ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.acknowledgementMode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode. For the regular modes, it is preferable to use the acknowledgementModeName instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.eagerLoadingOfProperties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerLoadingOfBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-apns-kafka-connector/pom.xml b/connectors/camel-apns-kafka-connector/pom.xml
index 086bb62..2a3fad6 100644
--- a/connectors/camel-apns-kafka-connector/pom.xml
+++ b/connectors/camel-apns-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-apns-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: apns</name>
diff --git a/connectors/camel-apns-kafka-connector/src/main/assembly/package.xml b/connectors/camel-apns-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-apns-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-apns-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-apns-kafka-connector/src/main/docs/camel-apns-kafka-sink-connector.adoc b/connectors/camel-apns-kafka-connector/src/main/docs/camel-apns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..17844b3
--- /dev/null
+++ b/connectors/camel-apns-kafka-connector/src/main/docs/camel-apns-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-apns-kafka-connector-sink]]
+= camel-apns-kafka-connector sink configuration
+
+When using camel-apns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-apns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-apns sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tokens* | Configure this property in case you want to statically declare tokens related to devices you want to notify. Tokens are separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.apnsService* | The ApnsService to use. The org.apache.camel.component.apns.factory.ApnsServiceFactory can be used to build a ApnsService | null | ConfigDef.Importance.HIGH
+| *camel.component.apns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-apns-kafka-connector/src/main/docs/camel-apns-kafka-source-connector.adoc b/connectors/camel-apns-kafka-connector/src/main/docs/camel-apns-kafka-source-connector.adoc
new file mode 100644
index 0000000..abe6d72
--- /dev/null
+++ b/connectors/camel-apns-kafka-connector/src/main/docs/camel-apns-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-apns-kafka-connector-source]]
+= camel-apns-kafka-connector source configuration
+
+When using camel-apns-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-apns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-apns source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tokens* | Configure this property in case you want to statically declare tokens related to devices you want to notify. Tokens are separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.apnsService* | The ApnsService to use. The org.apache.camel.component.apns.factory.ApnsServiceFactory can be used to build a ApnsService | null | ConfigDef.Importance.HIGH
+| *camel.component.apns.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-as2-kafka-connector/pom.xml b/connectors/camel-as2-kafka-connector/pom.xml
index 6be3f9e..c1f0516 100644
--- a/connectors/camel-as2-kafka-connector/pom.xml
+++ b/connectors/camel-as2-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-as2-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: as2</name>
diff --git a/connectors/camel-as2-kafka-connector/src/main/assembly/package.xml b/connectors/camel-as2-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-as2-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-as2-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-as2-kafka-connector/src/main/docs/camel-as2-kafka-sink-connector.adoc b/connectors/camel-as2-kafka-connector/src/main/docs/camel-as2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c8cc82a
--- /dev/null
+++ b/connectors/camel-as2-kafka-connector/src/main/docs/camel-as2-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-as2-kafka-connector-sink]]
+= camel-as2-kafka-connector sink configuration
+
+When using camel-as2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-as2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-as2 sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [CLIENT] [SERVER] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.as2From* | The value of the AS2From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.as2MessageStructure* | The structure of AS2 Message. One of: PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, signature One of: [PLAIN] [SIGNED] [ENCRYPTED] [SIGNED_ENCRYPTED] [PLAIN_COMPRESSED] [SIGNED_COMPRESSED] [ENCRYPTED_COMPRESSED] [ENCRYPTED_COMPRESSED_SIGNED] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.as2To* | The value of the AS2To header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.as2Version* | The version of the AS2 protocol. One of: [1.0] [1.1] | "1.1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientFqdn* | The Client Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionAlgorithm* | The algorithm used to compress EDI message. One of: [ZLIB] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decryptingPrivateKey* | The key used to encrypt the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dispositionNotificationTo* | The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ediMessageTransferEncoding* | The transfer encoding of EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ediMessageType* | The content type of EDI message. One of application/edifact, application/edi-x12, application/edi-consent | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptingAlgorithm* | The algorithm used to encrypt EDI message. One of: [AES128_CBC] [AES192_CBC] [AES256_CBC] [AES128_CCM] [AES192_CCM] [AES256_CCM] [AES128_GCM] [AES192_GCM] [AES256_GCM] [CAMELLIA128_CBC] [CAMELLIA192_CBC] [CAMELLIA256_CBC] [CAST5_CBC] [DES_CBC] [DES_EDE3_CBC] [GOST28147_GCFB] [IDEA_CBC] [RC2_CBC] [RC4] [SEED_CBC] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptingCertificateChain* | The chain of certificates used to encrypt EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The value of the From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mdnMessageTemplate* | The template used to format MDN message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestUri* | The request URI of EDI message. | "/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.server* | The value included in the Server message header identifying the AS2 Server. | "Camel AS2 Server Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverFqdn* | The Server Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverPortNumber* | The port number of server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signedReceiptMicAlgorithms* | The list of algorithms, in order of preference, requested to generate a message integrity check (MIC) returned in message dispostion notification (MDN) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signingAlgorithm* | The algorithm used to sign EDI message. One of: [SHA3_224WITHRSA] [SHA3_256WITHRSA] [SHA3_384withRSA] [SHA3_512WITHRSA] [MD5WITHRSA] [SHA1WITHRSA] [MD2WITHRSA] [SHA224WITHRSA] [SHA256WITHRSA] [SHA384WITHRSA] [SHA512WITHRSA] [RIPEMD128WITHRSA] [RIPEMD160WITHRSA] [RIPEMD256WITHRSA] [SHA224WITHDSA] [SHA256WITHDSA] [SHA384WITHDSA] [SHA512WITHDSA] [SHA3_224WITHDSA] [SHA3_256WITHDSA] [SHA3_384WITHDSA] [SHA3_512WITHDSA] [SHA1WITHDSA] [SHA3_224WITHECDSA] [SHA3_256WITHECDSA] [SHA3_384WITHECDSA] [SHA3_512WITHECDSA] [SHA1WITHECDSA] [SHA224WITHECDSA] [SHA256WITHECDSA] [SHA384WITHECDSA] [SHA512WITHECDSA] [SHA1WITHPLAIN_ECDSA] [SHA224WITHPLAIN_ECDSA] [SHA256WITHPLAIN_ECDSA] [SHA384WITHPLAIN_ECDSA] [SHA512WITHPLAIN_ECDSA] [RIPEMD160WITHPLAIN_ECDSA] [SHA1WITHRSAANDMGF1] [SHA224WITHRSAANDMGF1] [SHA256WITHRSAANDMGF1] [SHA384WITHRSAANDMGF1] [SHA512WITHRSAANDMGF1] [SHA3_224WITHRSAANDMGF1] [SHA3_256WITHRSAANDMGF1] [SHA3_384WITHRSAANDMGF1] [SHA3_512WITHRSAANDMGF1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signingCertificateChain* | The chain of certificates used to sign EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signingPrivateKey* | The key used to sign the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The value of Subject header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetHostname* | The host name (IP or DNS name) of target host. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetPortNumber* | The port number of target host. -1 indicates the scheme default port. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userAgent* | The value included in the User-Agent message header identifying the AS2 user agent. | "Camel AS2 Client Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-as2-kafka-connector/src/main/docs/camel-as2-kafka-source-connector.adoc b/connectors/camel-as2-kafka-connector/src/main/docs/camel-as2-kafka-source-connector.adoc
new file mode 100644
index 0000000..5fe7067
--- /dev/null
+++ b/connectors/camel-as2-kafka-connector/src/main/docs/camel-as2-kafka-source-connector.adoc
@@ -0,0 +1,79 @@
+// kafka-connector options: START
+[[camel-as2-kafka-connector-source]]
+= camel-as2-kafka-connector source configuration
+
+When using camel-as2-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-as2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-as2 source connector supports 53 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [CLIENT] [SERVER] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.as2From* | The value of the AS2From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.as2MessageStructure* | The structure of AS2 Message. One of: PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, signature One of: [PLAIN] [SIGNED] [ENCRYPTED] [SIGNED_ENCRYPTED] [PLAIN_COMPRESSED] [SIGNED_COMPRESSED] [ENCRYPTED_COMPRESSED] [ENCRYPTED_COMPRESSED_SIGNED] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.as2To* | The value of the AS2To header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.as2Version* | The version of the AS2 protocol. One of: [1.0] [1.1] | "1.1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientFqdn* | The Client Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compressionAlgorithm* | The algorithm used to compress EDI message. One of: [ZLIB] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decryptingPrivateKey* | The key used to encrypt the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dispositionNotificationTo* | The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ediMessageTransferEncoding* | The transfer encoding of EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ediMessageType* | The content type of EDI message. One of application/edifact, application/edi-x12, application/edi-consent | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptingAlgorithm* | The algorithm used to encrypt EDI message. One of: [AES128_CBC] [AES192_CBC] [AES256_CBC] [AES128_CCM] [AES192_CCM] [AES256_CCM] [AES128_GCM] [AES192_GCM] [AES256_GCM] [CAMELLIA128_CBC] [CAMELLIA192_CBC] [CAMELLIA256_CBC] [CAST5_CBC] [DES_CBC] [DES_EDE3_CBC] [GOST28147_GCFB] [IDEA_CBC] [RC2_CBC] [RC4] [SEED_CBC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptingCertificateChain* | The chain of certificates used to encrypt EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.from* | The value of the From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mdnMessageTemplate* | The template used to format MDN message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestUri* | The request URI of EDI message. | "/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.server* | The value included in the Server message header identifying the AS2 Server. | "Camel AS2 Server Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverFqdn* | The Server Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverPortNumber* | The port number of server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signedReceiptMicAlgorithms* | The list of algorithms, in order of preference, requested to generate a message integrity check (MIC) returned in message dispostion notification (MDN) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signingAlgorithm* | The algorithm used to sign EDI message. One of: [SHA3_224WITHRSA] [SHA3_256WITHRSA] [SHA3_384withRSA] [SHA3_512WITHRSA] [MD5WITHRSA] [SHA1WITHRSA] [MD2WITHRSA] [SHA224WITHRSA] [SHA256WITHRSA] [SHA384WITHRSA] [SHA512WITHRSA] [RIPEMD128WITHRSA] [RIPEMD160WITHRSA] [RIPEMD256WITHRSA] [SHA224WITHDSA] [SHA256WITHDSA] [SHA384WITHDSA] [SHA512WITHDSA] [SHA3_224WITHDSA] [SHA3_256WITHDSA] [SHA3_384WITHDSA] [SHA3_512WITHDSA] [SHA1WITHDSA] [SHA3_224WITHECDSA] [SHA3_256WITHECDSA] [SHA3_384WITHECDSA] [SHA3_512WITHECDSA] [SHA1WITHECDSA] [SHA224WITHECDSA] [SHA256WITHECDSA] [SHA384WITHECDSA] [SHA512WITHECDSA] [SHA1WITHPLAIN_ECDSA] [SHA224WITHPLAIN_ECDSA] [SHA256WITHPLAIN_ECDSA] [SHA384WITHPLAIN_ECDSA] [SHA512WITHPLAIN_ECDSA] [RIPEMD160WITHPLAIN_ECDSA] [SHA1WITHRSAANDMGF1] [SHA224WITHRSAANDMGF1] [SHA256WITHRSAANDMGF1] [SHA384WITHRSAANDMGF1] [SHA512WITHRSAANDMGF1] [SHA3_224WITHRSAANDMGF1] [SHA3_256WITHRSAANDMGF1] [SHA3_384WITHRSAANDMGF1] [SHA3_512WITHRSAANDMGF1] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signingCertificateChain* | The chain of certificates used to sign EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signingPrivateKey* | The key used to sign the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subject* | The value of Subject header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.targetHostname* | The host name (IP or DNS name) of target host. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.targetPortNumber* | The port number of target host. -1 indicates the scheme default port. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userAgent* | The value included in the User-Agent message header identifying the AS2 user agent. | "Camel AS2 Client Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-asterisk-kafka-connector/pom.xml b/connectors/camel-asterisk-kafka-connector/pom.xml
index 99fcafc1..6be7187 100644
--- a/connectors/camel-asterisk-kafka-connector/pom.xml
+++ b/connectors/camel-asterisk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-asterisk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: asterisk</name>
diff --git a/connectors/camel-asterisk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-asterisk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-asterisk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-asterisk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-asterisk-kafka-connector/src/main/docs/camel-asterisk-kafka-sink-connector.adoc b/connectors/camel-asterisk-kafka-connector/src/main/docs/camel-asterisk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..11c9c0f
--- /dev/null
+++ b/connectors/camel-asterisk-kafka-connector/src/main/docs/camel-asterisk-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-asterisk-kafka-connector-sink]]
+= camel-asterisk-kafka-connector sink configuration
+
+When using camel-asterisk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-asterisk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-asterisk sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of component | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.hostname* | The hostname of the asterisk server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.password* | Login password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | Login username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | What action to perform such as getting queue status, sip peers or extension state. One of: [QUEUE_STATUS] [SIP_PEERS] [EXTENSION_STATE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-asterisk-kafka-connector/src/main/docs/camel-asterisk-kafka-source-connector.adoc b/connectors/camel-asterisk-kafka-connector/src/main/docs/camel-asterisk-kafka-source-connector.adoc
new file mode 100644
index 0000000..35b3a3e
--- /dev/null
+++ b/connectors/camel-asterisk-kafka-connector/src/main/docs/camel-asterisk-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-asterisk-kafka-connector-source]]
+= camel-asterisk-kafka-connector source configuration
+
+When using camel-asterisk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-asterisk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-asterisk source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of component | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.hostname* | The hostname of the asterisk server | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.password* | Login password | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.username* | Login username | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atmos-kafka-connector/pom.xml b/connectors/camel-atmos-kafka-connector/pom.xml
index a1cf179..a98a512 100644
--- a/connectors/camel-atmos-kafka-connector/pom.xml
+++ b/connectors/camel-atmos-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atmos-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atmos</name>
diff --git a/connectors/camel-atmos-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atmos-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atmos-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atmos-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atmos-kafka-connector/src/main/docs/camel-atmos-kafka-sink-connector.adoc b/connectors/camel-atmos-kafka-connector/src/main/docs/camel-atmos-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b3011a4
--- /dev/null
+++ b/connectors/camel-atmos-kafka-connector/src/main/docs/camel-atmos-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-atmos-kafka-connector-sink]]
+= camel-atmos-kafka-connector sink configuration
+
+When using camel-atmos-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmos-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmos sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Atmos name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.operation* | Operation to perform One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.localPath* | Local path to put files | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.newRemotePath* | New path on Atmos when moving files | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | Search query on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remotePath* | Where to put files on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uri* | Atomos server uri | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fullTokenId* | Atmos client fullTokenId | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslValidation* | Atmos SSL validation | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.uri* | The URI of the server for the Atmos client to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.fullTokenId* | The token id to pass to the Atmos client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.sslValidation* | Whether the Atmos client should perform SSL validation | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atmos-kafka-connector/src/main/docs/camel-atmos-kafka-source-connector.adoc b/connectors/camel-atmos-kafka-connector/src/main/docs/camel-atmos-kafka-source-connector.adoc
new file mode 100644
index 0000000..d328bfd
--- /dev/null
+++ b/connectors/camel-atmos-kafka-connector/src/main/docs/camel-atmos-kafka-source-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-atmos-kafka-connector-source]]
+= camel-atmos-kafka-connector source configuration
+
+When using camel-atmos-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmos-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmos source connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Atmos name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.operation* | Operation to perform One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.localPath* | Local path to put files | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.newRemotePath* | New path on Atmos when moving files | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | Search query on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remotePath* | Where to put files on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uri* | Atomos server uri | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fullTokenId* | Atmos client fullTokenId | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslValidation* | Atmos SSL validation | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.uri* | The URI of the server for the Atmos client to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.fullTokenId* | The token id to pass to the Atmos client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.sslValidation* | Whether the Atmos client should perform SSL validation | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atmosphere-websocket-kafka-connector/pom.xml b/connectors/camel-atmosphere-websocket-kafka-connector/pom.xml
index a515c71..95a54e5 100644
--- a/connectors/camel-atmosphere-websocket-kafka-connector/pom.xml
+++ b/connectors/camel-atmosphere-websocket-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atmosphere-websocket-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atmosphere-websocket</name>
diff --git a/connectors/camel-atmosphere-websocket-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atmosphere-websocket-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atmosphere-websocket-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atmosphere-websocket-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atmosphere-websocket-kafka-connector/src/main/docs/camel-atmosphere-websocket-kafka-sink-connector.adoc b/connectors/camel-atmosphere-websocket-kafka-connector/src/main/docs/camel-atmosphere-websocket-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ac1c63f
--- /dev/null
+++ b/connectors/camel-atmosphere-websocket-kafka-connector/src/main/docs/camel-atmosphere-websocket-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-atmosphere-websocket-kafka-connector-sink]]
+= camel-atmosphere-websocket-kafka-connector sink configuration
+
+When using camel-atmosphere-websocket-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmosphere-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmosphere-websocket sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.servicePath* | Name of websocket endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | Whether to send to all (broadcast) or send to a single receiver. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyHeaders* | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMethod* | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. One of: [GET] [POST] [PUT] [DELETE] [HEAD] [OPTIONS] [TRACE] [PATCH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreResponseBody* | If this option is true, The http producer won't read response body and cache the input stream | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthScheme* | Proxy authentication scheme to use One of: [http] [https] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | Proxy hostname to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Proxy port to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authHost* | Authentication host to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.allowJava SerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.http Configuration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.headerFilter Strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atmosphere-websocket-kafka-connector/src/main/docs/camel-atmosphere-websocket-kafka-source-connector.adoc b/connectors/camel-atmosphere-websocket-kafka-connector/src/main/docs/camel-atmosphere-websocket-kafka-source-connector.adoc
new file mode 100644
index 0000000..8b6360e
--- /dev/null
+++ b/connectors/camel-atmosphere-websocket-kafka-connector/src/main/docs/camel-atmosphere-websocket-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-atmosphere-websocket-kafka-connector-source]]
+= camel-atmosphere-websocket-kafka-connector source configuration
+
+When using camel-atmosphere-websocket-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmosphere-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmosphere-websocket source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.servicePath* | Name of websocket endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendToAll* | Whether to send to all (broadcast) or send to a single receiver. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.async* | Configure the consumer to work in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.responseBufferSize* | To use a custom buffer size on the javax.servlet.ServletResponse. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servletName* | Name of the servlet to use | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentMultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckContentAvailable* | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileNameExtWhitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.servletName* | Default name of servlet to use. The default name is CamelServlet. | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.attachment MultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.fileNameExt Whitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.httpRegistry* | To use a custom org.apache.camel.component.servlet.HttpRegistry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.allowJava SerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.http Configuration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.headerFilter Strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atom-kafka-connector/pom.xml b/connectors/camel-atom-kafka-connector/pom.xml
index 90e22fe..358fafb 100644
--- a/connectors/camel-atom-kafka-connector/pom.xml
+++ b/connectors/camel-atom-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atom-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atom</name>
diff --git a/connectors/camel-atom-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atom-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atom-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atom-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atom-kafka-connector/src/main/docs/camel-atom-kafka-source-connector.adoc b/connectors/camel-atom-kafka-connector/src/main/docs/camel-atom-kafka-source-connector.adoc
new file mode 100644
index 0000000..1594e7b
--- /dev/null
+++ b/connectors/camel-atom-kafka-connector/src/main/docs/camel-atom-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-atom-kafka-connector-source]]
+= camel-atom-kafka-connector source configuration
+
+When using camel-atom-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atom-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atom source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.feedUri* | The URI to the feed to poll. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.feedHeader* | Sets whether to add the feed object as a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Sets whether to use filtering or not of the entries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lastUpdate* | Sets the timestamp to be used for filtering entries from the atom feeds. This options is only in conjunction with the splitEntries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortEntries* | Sets whether to sort entries by published date. Only works when splitEntries = true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitEntries* | Sets whether or not entries should be sent individually or whether the entire feed should be sent as a single message | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throttleEntries* | Sets whether all entries identified in a single feed poll should be delivered immediately. If true, only one entry is processed per consumer.delay. Only applicable when splitEntries = true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Sets the username to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.atom.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atom.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-map-kafka-connector/pom.xml b/connectors/camel-atomix-map-kafka-connector/pom.xml
index 47b82af..ab00a15 100644
--- a/connectors/camel-atomix-map-kafka-connector/pom.xml
+++ b/connectors/camel-atomix-map-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atomix-map-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atomix-map</name>
diff --git a/connectors/camel-atomix-map-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atomix-map-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atomix-map-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atomix-map-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atomix-map-kafka-connector/src/main/docs/camel-atomix-map-kafka-sink-connector.adoc b/connectors/camel-atomix-map-kafka-connector/src/main/docs/camel-atomix-map-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86dff9c
--- /dev/null
+++ b/connectors/camel-atomix-map-kafka-connector/src/main/docs/camel-atomix-map-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-atomix-map-kafka-connector-sink]]
+= camel-atomix-map-kafka-connector sink configuration
+
+When using camel-atomix-map-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-map sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [PUT] [PUT_IF_ABSENT] [GET] [CLEAR] [SIZE] [CONTAINS_KEY] [CONTAINS_VALUE] [IS_EMPTY] [ENTRY_SET] [REMOVE] [REPLACE] [VALUES] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The key to use if none is set in the header or to listen for events for a specific key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-map-kafka-connector/src/main/docs/camel-atomix-map-kafka-source-connector.adoc b/connectors/camel-atomix-map-kafka-connector/src/main/docs/camel-atomix-map-kafka-source-connector.adoc
new file mode 100644
index 0000000..71149ae
--- /dev/null
+++ b/connectors/camel-atomix-map-kafka-connector/src/main/docs/camel-atomix-map-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-atomix-map-kafka-connector-source]]
+= camel-atomix-map-kafka-connector source configuration
+
+When using camel-atomix-map-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-map source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [PUT] [PUT_IF_ABSENT] [GET] [CLEAR] [SIZE] [CONTAINS_KEY] [CONTAINS_VALUE] [IS_EMPTY] [ENTRY_SET] [REMOVE] [REPLACE] [VALUES] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.key* | The key to use if none is set in the header or to listen for events for a specific key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-messaging-kafka-connector/pom.xml b/connectors/camel-atomix-messaging-kafka-connector/pom.xml
index 6fa7a3a..3c5a013 100644
--- a/connectors/camel-atomix-messaging-kafka-connector/pom.xml
+++ b/connectors/camel-atomix-messaging-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atomix-messaging-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atomix-messaging</name>
diff --git a/connectors/camel-atomix-messaging-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atomix-messaging-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atomix-messaging-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atomix-messaging-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atomix-messaging-kafka-connector/src/main/docs/camel-atomix-messaging-kafka-sink-connector.adoc b/connectors/camel-atomix-messaging-kafka-connector/src/main/docs/camel-atomix-messaging-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0634ed8
--- /dev/null
+++ b/connectors/camel-atomix-messaging-kafka-connector/src/main/docs/camel-atomix-messaging-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-atomix-messaging-kafka-connector-sink]]
+= camel-atomix-messaging-kafka-connector sink configuration
+
+When using camel-atomix-messaging-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-messaging sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.broadcastType* | The broadcast type. One of: [ALL] [RANDOM] | "ALL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelName* | The messaging channel name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [DIRECT] [BROADCAST] | "DIRECT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.memberName* | The Atomix Group member name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-messaging-kafka-connector/src/main/docs/camel-atomix-messaging-kafka-source-connector.adoc b/connectors/camel-atomix-messaging-kafka-connector/src/main/docs/camel-atomix-messaging-kafka-source-connector.adoc
new file mode 100644
index 0000000..a0c7476
--- /dev/null
+++ b/connectors/camel-atomix-messaging-kafka-connector/src/main/docs/camel-atomix-messaging-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-atomix-messaging-kafka-connector-source]]
+= camel-atomix-messaging-kafka-connector source configuration
+
+When using camel-atomix-messaging-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-messaging source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.broadcastType* | The broadcast type. One of: [ALL] [RANDOM] | "ALL" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelName* | The messaging channel name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [DIRECT] [BROADCAST] | "DIRECT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.memberName* | The Atomix Group member name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-multimap-kafka-connector/pom.xml b/connectors/camel-atomix-multimap-kafka-connector/pom.xml
index 75d310e..2e20ec8 100644
--- a/connectors/camel-atomix-multimap-kafka-connector/pom.xml
+++ b/connectors/camel-atomix-multimap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atomix-multimap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atomix-multimap</name>
diff --git a/connectors/camel-atomix-multimap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atomix-multimap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atomix-multimap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atomix-multimap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atomix-multimap-kafka-connector/src/main/docs/camel-atomix-multimap-kafka-sink-connector.adoc b/connectors/camel-atomix-multimap-kafka-connector/src/main/docs/camel-atomix-multimap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..37aa1d4
--- /dev/null
+++ b/connectors/camel-atomix-multimap-kafka-connector/src/main/docs/camel-atomix-multimap-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-atomix-multimap-kafka-connector-sink]]
+= camel-atomix-multimap-kafka-connector sink configuration
+
+When using camel-atomix-multimap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-multimap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-multimap sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [PUT] [GET] [CLEAR] [SIZE] [CONTAINS_KEY] [IS_EMPTY] [REMOVE] [REMOVE_VALUE] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The key to use if none is set in the header or to listen for events for a specific key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-queue-kafka-connector/pom.xml b/connectors/camel-atomix-queue-kafka-connector/pom.xml
index 23be537..b1d1fca 100644
--- a/connectors/camel-atomix-queue-kafka-connector/pom.xml
+++ b/connectors/camel-atomix-queue-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atomix-queue-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atomix-queue</name>
diff --git a/connectors/camel-atomix-queue-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atomix-queue-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atomix-queue-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atomix-queue-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atomix-queue-kafka-connector/src/main/docs/camel-atomix-queue-kafka-sink-connector.adoc b/connectors/camel-atomix-queue-kafka-connector/src/main/docs/camel-atomix-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7b13ed9
--- /dev/null
+++ b/connectors/camel-atomix-queue-kafka-connector/src/main/docs/camel-atomix-queue-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-atomix-queue-kafka-connector-sink]]
+= camel-atomix-queue-kafka-connector sink configuration
+
+When using camel-atomix-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-queue sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [ADD] [OFFER] [PEEK] [POLL] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-queue-kafka-connector/src/main/docs/camel-atomix-queue-kafka-source-connector.adoc b/connectors/camel-atomix-queue-kafka-connector/src/main/docs/camel-atomix-queue-kafka-source-connector.adoc
new file mode 100644
index 0000000..2ae7cb3
--- /dev/null
+++ b/connectors/camel-atomix-queue-kafka-connector/src/main/docs/camel-atomix-queue-kafka-source-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-atomix-queue-kafka-connector-source]]
+= camel-atomix-queue-kafka-connector source configuration
+
+When using camel-atomix-queue-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-queue source connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [ADD] [OFFER] [PEEK] [POLL] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-set-kafka-connector/pom.xml b/connectors/camel-atomix-set-kafka-connector/pom.xml
index 50ecccb..9e9b944 100644
--- a/connectors/camel-atomix-set-kafka-connector/pom.xml
+++ b/connectors/camel-atomix-set-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atomix-set-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atomix-set</name>
diff --git a/connectors/camel-atomix-set-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atomix-set-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atomix-set-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atomix-set-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atomix-set-kafka-connector/src/main/docs/camel-atomix-set-kafka-sink-connector.adoc b/connectors/camel-atomix-set-kafka-connector/src/main/docs/camel-atomix-set-kafka-sink-connector.adoc
new file mode 100644
index 0000000..588d32c
--- /dev/null
+++ b/connectors/camel-atomix-set-kafka-connector/src/main/docs/camel-atomix-set-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-atomix-set-kafka-connector-sink]]
+= camel-atomix-set-kafka-connector sink configuration
+
+When using camel-atomix-set-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-set sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [ADD] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-set-kafka-connector/src/main/docs/camel-atomix-set-kafka-source-connector.adoc b/connectors/camel-atomix-set-kafka-connector/src/main/docs/camel-atomix-set-kafka-source-connector.adoc
new file mode 100644
index 0000000..b816d6e
--- /dev/null
+++ b/connectors/camel-atomix-set-kafka-connector/src/main/docs/camel-atomix-set-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-atomix-set-kafka-connector-source]]
+= camel-atomix-set-kafka-connector source configuration
+
+When using camel-atomix-set-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-set source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [ADD] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-value-kafka-connector/pom.xml b/connectors/camel-atomix-value-kafka-connector/pom.xml
index adb6234..f8cc421 100644
--- a/connectors/camel-atomix-value-kafka-connector/pom.xml
+++ b/connectors/camel-atomix-value-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-atomix-value-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: atomix-value</name>
diff --git a/connectors/camel-atomix-value-kafka-connector/src/main/assembly/package.xml b/connectors/camel-atomix-value-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-atomix-value-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-atomix-value-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-atomix-value-kafka-connector/src/main/docs/camel-atomix-value-kafka-sink-connector.adoc b/connectors/camel-atomix-value-kafka-connector/src/main/docs/camel-atomix-value-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a7f072c
--- /dev/null
+++ b/connectors/camel-atomix-value-kafka-connector/src/main/docs/camel-atomix-value-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-atomix-value-kafka-connector-sink]]
+= camel-atomix-value-kafka-connector sink configuration
+
+When using camel-atomix-value-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-value-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-value sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [SET] [GET] [GET_AND_SET] [COMPARE_AND_SET] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-atomix-value-kafka-connector/src/main/docs/camel-atomix-value-kafka-source-connector.adoc b/connectors/camel-atomix-value-kafka-connector/src/main/docs/camel-atomix-value-kafka-source-connector.adoc
new file mode 100644
index 0000000..9fe9baf
--- /dev/null
+++ b/connectors/camel-atomix-value-kafka-connector/src/main/docs/camel-atomix-value-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-atomix-value-kafka-connector-source]]
+= camel-atomix-value-kafka-connector source configuration
+
+When using camel-atomix-value-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-value-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-value source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [SET] [GET] [GET_AND_SET] [COMPARE_AND_SET] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-avro-kafka-connector/pom.xml b/connectors/camel-avro-kafka-connector/pom.xml
index b8ca810..38a3acd 100644
--- a/connectors/camel-avro-kafka-connector/pom.xml
+++ b/connectors/camel-avro-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-avro-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: avro</name>
diff --git a/connectors/camel-avro-kafka-connector/src/main/assembly/package.xml b/connectors/camel-avro-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-avro-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-avro-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-avro-kafka-connector/src/main/docs/camel-avro-kafka-sink-connector.adoc b/connectors/camel-avro-kafka-connector/src/main/docs/camel-avro-kafka-sink-connector.adoc
new file mode 100644
index 0000000..df4c2cd
--- /dev/null
+++ b/connectors/camel-avro-kafka-connector/src/main/docs/camel-avro-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-avro-kafka-connector-sink]]
+= camel-avro-kafka-connector sink configuration
+
+When using camel-avro-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-avro-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-avro sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.transport* | Transport to use, can be either http or netty One of: [http] [netty] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | Hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.messageName* | The name of the message to send. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | Avro protocol to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolClassName* | Avro protocol to use defined by the FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolLocation* | Avro protocol location | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reflectionProtocol* | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.singleParameter* | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriAuthority* | Authority to use (username and password) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.configuration* | To use a shared AvroConfiguration to configure options once | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-avro-kafka-connector/src/main/docs/camel-avro-kafka-source-connector.adoc b/connectors/camel-avro-kafka-connector/src/main/docs/camel-avro-kafka-source-connector.adoc
new file mode 100644
index 0000000..034ea27
--- /dev/null
+++ b/connectors/camel-avro-kafka-connector/src/main/docs/camel-avro-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-avro-kafka-connector-source]]
+= camel-avro-kafka-connector source configuration
+
+When using camel-avro-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-avro-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-avro source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.transport* | Transport to use, can be either http or netty One of: [http] [netty] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | Hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.messageName* | The name of the message to send. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | Avro protocol to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolClassName* | Avro protocol to use defined by the FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolLocation* | Avro protocol location | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reflectionProtocol* | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.singleParameter* | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uriAuthority* | Authority to use (username and password) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.configuration* | To use a shared AvroConfiguration to configure options once | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-cw-kafka-connector/pom.xml b/connectors/camel-aws-cw-kafka-connector/pom.xml
index e40f35b..28bbcfe 100644
--- a/connectors/camel-aws-cw-kafka-connector/pom.xml
+++ b/connectors/camel-aws-cw-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-cw-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-cw</name>
diff --git a/connectors/camel-aws-cw-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-cw-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-cw-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-cw-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-cw-kafka-connector/src/main/docs/camel-aws-cw-kafka-sink-connector.adoc b/connectors/camel-aws-cw-kafka-connector/src/main/docs/camel-aws-cw-kafka-sink-connector.adoc
new file mode 100644
index 0000000..73c8dda
--- /dev/null
+++ b/connectors/camel-aws-cw-kafka-connector/src/main/docs/camel-aws-cw-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws-cw-kafka-connector-sink]]
+= camel-aws-cw-kafka-connector sink configuration
+
+When using camel-aws-cw-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-cw-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-cw sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.namespace* | The metric namespace | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonCwClient* | To use the AmazonCloudWatch as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the CW client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which CW client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timestamp* | The metric timestamp | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.unit* | The metric unit | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | The metric value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.region* | The region in which CW client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.configuration* | The AWS CW default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-ddb-kafka-connector/pom.xml b/connectors/camel-aws-ddb-kafka-connector/pom.xml
index 531d274..8f79694 100644
--- a/connectors/camel-aws-ddb-kafka-connector/pom.xml
+++ b/connectors/camel-aws-ddb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-ddb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-ddb</name>
diff --git a/connectors/camel-aws-ddb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-ddb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-ddb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-ddb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-ddb-kafka-connector/src/main/docs/camel-aws-ddb-kafka-sink-connector.adoc b/connectors/camel-aws-ddb-kafka-connector/src/main/docs/camel-aws-ddb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..dc02caa
--- /dev/null
+++ b/connectors/camel-aws-ddb-kafka-connector/src/main/docs/camel-aws-ddb-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-aws-ddb-kafka-connector-sink]]
+= camel-aws-ddb-kafka-connector sink configuration
+
+When using camel-aws-ddb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ddb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ddb sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.tableName* | The name of the table currently worked with. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonDDBClient* | To use the AmazonDynamoDB as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistentRead* | Determines whether or not strong consistency should be enforced when data is read. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeName* | Attribute name when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeType* | Attribute type when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | What operation to perform One of: [BatchGetItems] [DeleteItem] [DeleteTable] [DescribeTable] [GetItem] [PutItem] [Query] [Scan] [UpdateItem] [UpdateTable] | "PutItem" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the DDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the DDB client. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDB client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readCapacity* | The provisioned throughput to reserve for reading resources from your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeCapacity* | The provisioned throughput to reserved for writing resources to your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.configuration* | The AWS DDB default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-ddbstream-kafka-connector/pom.xml b/connectors/camel-aws-ddbstream-kafka-connector/pom.xml
index 951834f..4af8066 100644
--- a/connectors/camel-aws-ddbstream-kafka-connector/pom.xml
+++ b/connectors/camel-aws-ddbstream-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-ddbstream-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-ddbstream</name>
diff --git a/connectors/camel-aws-ddbstream-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-ddbstream-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-ddbstream-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-ddbstream-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-ddbstream-kafka-connector/src/main/docs/camel-aws-ddbstream-kafka-source-connector.adoc b/connectors/camel-aws-ddbstream-kafka-connector/src/main/docs/camel-aws-ddbstream-kafka-source-connector.adoc
new file mode 100644
index 0000000..b20a05a
--- /dev/null
+++ b/connectors/camel-aws-ddbstream-kafka-connector/src/main/docs/camel-aws-ddbstream-kafka-source-connector.adoc
@@ -0,0 +1,64 @@
+// kafka-connector options: START
+[[camel-aws-ddbstream-kafka-connector-source]]
+= camel-aws-ddbstream-kafka-connector source configuration
+
+When using camel-aws-ddbstream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ddbstream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ddbstream source connector supports 38 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.tableName* | Name of the dynamodb table | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonDynamoDbStreamsClient* | Amazon DynamoDB client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.iteratorType* | Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if {AT,AFTER}_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. One of: [TRIM_HORIZON] [LATEST] [AT_SEQUENCE_NUMBER] [AFTER_SEQUENCE_NUMBER] | "LATEST" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResultsPerRequest* | Maximum number of records that will be fetched in each poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDBStreams client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which DDBStreams client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sequenceNumberProvider* | Provider for the sequence number when using one of the two ShardIteratorType.{AT,AFTER}_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.configuration* | The AWS DDB stream default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-ec2-kafka-connector/pom.xml b/connectors/camel-aws-ec2-kafka-connector/pom.xml
index 29a3454..ae8cd94 100644
--- a/connectors/camel-aws-ec2-kafka-connector/pom.xml
+++ b/connectors/camel-aws-ec2-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-ec2-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-ec2</name>
diff --git a/connectors/camel-aws-ec2-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-ec2-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-ec2-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-ec2-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-ec2-kafka-connector/src/main/docs/camel-aws-ec2-kafka-sink-connector.adoc b/connectors/camel-aws-ec2-kafka-connector/src/main/docs/camel-aws-ec2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7c5f79f
--- /dev/null
+++ b/connectors/camel-aws-ec2-kafka-connector/src/main/docs/camel-aws-ec2-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-ec2-kafka-connector-sink]]
+= camel-aws-ec2-kafka-connector sink configuration
+
+When using camel-aws-ec2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ec2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ec2 sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonEc2Client* | To use a existing configured AmazonEC2Client as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags One of: [createAndRunInstances] [startInstances] [stopInstances] [terminateInstances] [describeInstances] [describeInstancesStatus] [rebootInstances] [monitorInstances] [unmonitorInstances] [createTags] [deleteTags] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EC2 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EC2 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.region* | The region in which EC2 client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.configuration* | The AWS EC2 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-ecs-kafka-connector/pom.xml b/connectors/camel-aws-ecs-kafka-connector/pom.xml
index ac4ce11..cc93429 100644
--- a/connectors/camel-aws-ecs-kafka-connector/pom.xml
+++ b/connectors/camel-aws-ecs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-ecs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-ecs</name>
diff --git a/connectors/camel-aws-ecs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-ecs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-ecs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-ecs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-ecs-kafka-connector/src/main/docs/camel-aws-ecs-kafka-sink-connector.adoc b/connectors/camel-aws-ecs-kafka-connector/src/main/docs/camel-aws-ecs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4d7e187
--- /dev/null
+++ b/connectors/camel-aws-ecs-kafka-connector/src/main/docs/camel-aws-ecs-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-ecs-kafka-connector-sink]]
+= camel-aws-ecs-kafka-connector sink configuration
+
+When using camel-aws-ecs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ecs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ecs sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ecsClient* | To use a existing configured AWS ECS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the ECS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.region* | The region in which ECS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.configuration* | The AWS ECS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-eks-kafka-connector/pom.xml b/connectors/camel-aws-eks-kafka-connector/pom.xml
index 022654a..bc84134 100644
--- a/connectors/camel-aws-eks-kafka-connector/pom.xml
+++ b/connectors/camel-aws-eks-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-eks-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-eks</name>
diff --git a/connectors/camel-aws-eks-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-eks-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-eks-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-eks-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-eks-kafka-connector/src/main/docs/camel-aws-eks-kafka-sink-connector.adoc b/connectors/camel-aws-eks-kafka-connector/src/main/docs/camel-aws-eks-kafka-sink-connector.adoc
new file mode 100644
index 0000000..da42597
--- /dev/null
+++ b/connectors/camel-aws-eks-kafka-connector/src/main/docs/camel-aws-eks-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-eks-kafka-connector-sink]]
+= camel-aws-eks-kafka-connector sink configuration
+
+When using camel-aws-eks-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-eks-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-eks sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eksClient* | To use a existing configured AWS EKS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EKS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.region* | The region in which EKS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.configuration* | The AWS EKS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-iam-kafka-connector/pom.xml b/connectors/camel-aws-iam-kafka-connector/pom.xml
index 0abd7d7..c18d5db 100644
--- a/connectors/camel-aws-iam-kafka-connector/pom.xml
+++ b/connectors/camel-aws-iam-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-iam-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-iam</name>
diff --git a/connectors/camel-aws-iam-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-iam-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-iam-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-iam-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-iam-kafka-connector/src/main/docs/camel-aws-iam-kafka-sink-connector.adoc b/connectors/camel-aws-iam-kafka-connector/src/main/docs/camel-aws-iam-kafka-sink-connector.adoc
new file mode 100644
index 0000000..94b1a83
--- /dev/null
+++ b/connectors/camel-aws-iam-kafka-connector/src/main/docs/camel-aws-iam-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-iam-kafka-connector-sink]]
+= camel-aws-iam-kafka-connector sink configuration
+
+When using camel-aws-iam-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-iam-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-iam sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.iamClient* | To use a existing configured AWS IAM as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listAccessKeys] [createUser] [deleteUser] [getUser] [listUsers] [createAccessKey] [deleteAccessKey] [updateAccessKey] [createGroup] [deleteGroup] [listGroups] [addUserToGroup] [removeUserFromGroup] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the IAM client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which IAM client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.region* | The region in which IAM client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.configuration* | The AWS IAM default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-kinesis-firehose-kafka-connector/pom.xml b/connectors/camel-aws-kinesis-firehose-kafka-connector/pom.xml
index 7f63b7a..18006d8 100644
--- a/connectors/camel-aws-kinesis-firehose-kafka-connector/pom.xml
+++ b/connectors/camel-aws-kinesis-firehose-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-kinesis-firehose-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-kinesis-firehose</name>
diff --git a/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/docs/camel-aws-kinesis-firehose-kafka-sink-connector.adoc b/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/docs/camel-aws-kinesis-firehose-kafka-sink-connector.adoc
new file mode 100644
index 0000000..60d9ffb
--- /dev/null
+++ b/connectors/camel-aws-kinesis-firehose-kafka-connector/src/main/docs/camel-aws-kinesis-firehose-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-aws-kinesis-firehose-kafka-connector-sink]]
+= camel-aws-kinesis-firehose-kafka-connector sink configuration
+
+When using camel-aws-kinesis-firehose-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kinesis-firehose-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kinesis-firehose sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.streamName* | Name of the stream | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonKinesisFirehoseClient* | Amazon Kinesis Firehose client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Kinesis Firehose client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Kinesis Firehose client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Kinesis Firehose client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Kinesis client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1)You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.configuration* | The AWS Kinesis Firehose default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-kinesis-kafka-connector/pom.xml b/connectors/camel-aws-kinesis-kafka-connector/pom.xml
index 02be22c..4bb5a60 100644
--- a/connectors/camel-aws-kinesis-kafka-connector/pom.xml
+++ b/connectors/camel-aws-kinesis-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-kinesis-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-kinesis</name>
diff --git a/connectors/camel-aws-kinesis-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-kinesis-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-kinesis-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-kinesis-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-kinesis-kafka-connector/src/main/docs/camel-aws-kinesis-kafka-sink-connector.adoc b/connectors/camel-aws-kinesis-kafka-connector/src/main/docs/camel-aws-kinesis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a0d0832
--- /dev/null
+++ b/connectors/camel-aws-kinesis-kafka-connector/src/main/docs/camel-aws-kinesis-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-aws-kinesis-kafka-connector-sink]]
+= camel-aws-kinesis-kafka-connector sink configuration
+
+When using camel-aws-kinesis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kinesis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kinesis sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.streamName* | Name of the stream | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonKinesisClient* | Amazon Kinesis client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Kinesis client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Kinesis client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1)You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-kinesis-kafka-connector/src/main/docs/camel-aws-kinesis-kafka-source-connector.adoc b/connectors/camel-aws-kinesis-kafka-connector/src/main/docs/camel-aws-kinesis-kafka-source-connector.adoc
new file mode 100644
index 0000000..e5778c8
--- /dev/null
+++ b/connectors/camel-aws-kinesis-kafka-connector/src/main/docs/camel-aws-kinesis-kafka-source-connector.adoc
@@ -0,0 +1,66 @@
+// kafka-connector options: START
+[[camel-aws-kinesis-kafka-connector-source]]
+= camel-aws-kinesis-kafka-connector source configuration
+
+When using camel-aws-kinesis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kinesis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kinesis source connector supports 40 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.streamName* | Name of the stream | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonKinesisClient* | Amazon Kinesis client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Kinesis client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which Kinesis client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1)You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.iteratorType* | Defines where in the Kinesis stream to start getting records One of: [AT_SEQUENCE_NUMBER] [AFTER_SEQUENCE_NUMBER] [TRIM_HORIZON] [LATEST] [AT_TIMESTAMP] | "TRIM_HORIZON" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResultsPerRequest* | Maximum number of records that will be fetched in each poll | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sequenceNumber* | The sequence number to start polling from. Required if iteratorType is set to AFTER_SEQUENCE_NUMBER or AT_SEQUENCE_NUMBER | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shardClosed* | Define what will be the behavior in case of shard closed. Possible value are ignore, silent and fail. In case of ignore a message will be logged and the consumer will restart from the beginning,in case of silent there will be no logging and the consumer will start from the beginning,in case of fail a ReachedClosedStateException will be raised One of: [ignore] [fail] [silent] | "ignore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shardId* | Defines which shardId in the Kinesis stream to get records from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-kms-kafka-connector/pom.xml b/connectors/camel-aws-kms-kafka-connector/pom.xml
index c5613ad..8c82cd1 100644
--- a/connectors/camel-aws-kms-kafka-connector/pom.xml
+++ b/connectors/camel-aws-kms-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-kms-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-kms</name>
diff --git a/connectors/camel-aws-kms-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-kms-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-kms-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-kms-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-kms-kafka-connector/src/main/docs/camel-aws-kms-kafka-sink-connector.adoc b/connectors/camel-aws-kms-kafka-connector/src/main/docs/camel-aws-kms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c8ac375
--- /dev/null
+++ b/connectors/camel-aws-kms-kafka-connector/src/main/docs/camel-aws-kms-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-kms-kafka-connector-sink]]
+= camel-aws-kms-kafka-connector sink configuration
+
+When using camel-aws-kms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kms sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsClient* | To use a existing configured AWS KMS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listKeys] [createKey] [disableKey] [scheduleKeyDeletion] [describeKey] [enableKey] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the KMS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which KMS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.region* | The region in which KMS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.configuration* | The AWS KMS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-lambda-kafka-connector/pom.xml b/connectors/camel-aws-lambda-kafka-connector/pom.xml
index d93b34a..8858c26 100644
--- a/connectors/camel-aws-lambda-kafka-connector/pom.xml
+++ b/connectors/camel-aws-lambda-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-lambda-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-lambda</name>
diff --git a/connectors/camel-aws-lambda-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-lambda-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-lambda-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-lambda-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-lambda-kafka-connector/src/main/docs/camel-aws-lambda-kafka-sink-connector.adoc b/connectors/camel-aws-lambda-kafka-connector/src/main/docs/camel-aws-lambda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bc21d2e
--- /dev/null
+++ b/connectors/camel-aws-lambda-kafka-connector/src/main/docs/camel-aws-lambda-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-lambda-kafka-connector-sink]]
+= camel-aws-lambda-kafka-connector sink configuration
+
+When using camel-aws-lambda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-lambda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-lambda sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.function* | Name of the Lambda function. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be listFunctions, getFunction, createFunction, deleteFunction or invokeFunction One of: [listFunctions] [getFunction] [createAlias] [deleteAlias] [getAlias] [listAliases] [createFunction] [deleteFunction] [invokeFunction] [updateFunction] [createEventSourceMapping] [deleteEventSourceMapping] [listEventSourceMapping] [listTags] [tagResource] [untagResource] [publishVersion] [listVersions] | "invokeFunction" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | Amazon AWS Region. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.awsLambdaClient* | To use a existing configured AwsLambdaClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Lambda client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Lambda client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Lambda client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.configuration* | The AWS Lambda default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-mq-kafka-connector/pom.xml b/connectors/camel-aws-mq-kafka-connector/pom.xml
index a6c6f7d..590596e 100644
--- a/connectors/camel-aws-mq-kafka-connector/pom.xml
+++ b/connectors/camel-aws-mq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-mq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-mq</name>
diff --git a/connectors/camel-aws-mq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-mq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-mq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-mq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-mq-kafka-connector/src/main/docs/camel-aws-mq-kafka-sink-connector.adoc b/connectors/camel-aws-mq-kafka-connector/src/main/docs/camel-aws-mq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1d62017
--- /dev/null
+++ b/connectors/camel-aws-mq-kafka-connector/src/main/docs/camel-aws-mq-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-mq-kafka-connector-sink]]
+= camel-aws-mq-kafka-connector sink configuration
+
+When using camel-aws-mq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-mq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-mq sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonMqClient* | To use a existing configured AmazonMQClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be listBrokers,createBroker,deleteBroker One of: [listBrokers] [createBroker] [deleteBroker] [rebootBroker] [updateBroker] [describeBroker] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MQ client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MQ client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.region* | The region in which MQ client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.configuration* | The AWS MQ default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-msk-kafka-connector/pom.xml b/connectors/camel-aws-msk-kafka-connector/pom.xml
index 35fc3a9..0deb700 100644
--- a/connectors/camel-aws-msk-kafka-connector/pom.xml
+++ b/connectors/camel-aws-msk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-msk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-msk</name>
diff --git a/connectors/camel-aws-msk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-msk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-msk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-msk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-msk-kafka-connector/src/main/docs/camel-aws-msk-kafka-sink-connector.adoc b/connectors/camel-aws-msk-kafka-connector/src/main/docs/camel-aws-msk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..018ad00
--- /dev/null
+++ b/connectors/camel-aws-msk-kafka-connector/src/main/docs/camel-aws-msk-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-msk-kafka-connector-sink]]
+= camel-aws-msk-kafka-connector sink configuration
+
+When using camel-aws-msk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-msk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-msk sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mskClient* | To use a existing configured AWS MSK as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [createCluster] [deleteCluster] [describeCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MSK client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MSK client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.region* | The region in which MSK client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.configuration* | The AWS MSK default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-s3-kafka-connector/pom.xml b/connectors/camel-aws-s3-kafka-connector/pom.xml
index 085fe6a..8bbb895 100644
--- a/connectors/camel-aws-s3-kafka-connector/pom.xml
+++ b/connectors/camel-aws-s3-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-s3-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-s3</name>
diff --git a/connectors/camel-aws-s3-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-s3-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-s3-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-s3-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-s3-kafka-connector/src/main/docs/camel-aws-s3-kafka-sink-connector.adoc b/connectors/camel-aws-s3-kafka-connector/src/main/docs/camel-aws-s3-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b5bff82
--- /dev/null
+++ b/connectors/camel-aws-s3-kafka-connector/src/main/docs/camel-aws-s3-kafka-sink-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-aws-s3-kafka-connector-sink]]
+= camel-aws-s3-kafka-connector sink configuration
+
+When using camel-aws-s3-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-s3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-s3 sink connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.bucketNameOrArn* | Bucket name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonS3Client* | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateBucket* | Setting the autocreation of the bucket | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pathStyleAccess* | Whether or not the S3 client should use path style access | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Specify a proxy port to be used inside the client definition. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the S3 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useIAMCredentials* | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptionMaterials* | The encryption materials to use in case of Symmetric/Asymmetric client usage | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useEncryption* | Define if encryption must be used or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteAfterWrite* | Delete file object after the S3 file has been uploaded | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyName* | Setting the key name for an element in the bucket through endpoint parameter | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiPartUpload* | If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do in case the user don't want to do only an upload One of: [copyObject] [deleteBucket] [listBuckets] [downloadLink] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.partSize* | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverSideEncryption* | Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.storageClass* | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.awsKMSKeyId* | Define the id of KMS key to use in case KMS is enabled | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useAwsKMS* | Define if KMS must be used or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accelerateModeEnabled* | Define if Accelerate Mode enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunkedEncodingDisabled* | Define if disabled Chunked Encoding is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dualstackEnabled* | Define if Dualstack enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceGlobalBucketAccessEnabled* | Define if Force Global Bucket Access enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.payloadSigningEnabled* | Define if Payload Signing enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.region* | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-s3-kafka-connector/src/main/docs/camel-aws-s3-kafka-source-connector.adoc b/connectors/camel-aws-s3-kafka-connector/src/main/docs/camel-aws-s3-kafka-source-connector.adoc
new file mode 100644
index 0000000..54f7f22
--- /dev/null
+++ b/connectors/camel-aws-s3-kafka-connector/src/main/docs/camel-aws-s3-kafka-source-connector.adoc
@@ -0,0 +1,104 @@
+// kafka-connector options: START
+[[camel-aws-s3-kafka-connector-source]]
+= camel-aws-s3-kafka-connector source configuration
+
+When using camel-aws-s3-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-s3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-s3 source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.bucketNameOrArn* | Bucket name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonS3Client* | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateBucket* | Setting the autocreation of the bucket | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pathStyleAccess* | Whether or not the S3 client should use path style access | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.policy* | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | Specify a proxy port to be used inside the client definition. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the S3 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIAMCredentials* | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptionMaterials* | The encryption materials to use in case of Symmetric/Asymmetric client usage | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useEncryption* | Define if encryption must be used or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteAfterRead* | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, or only the S3Constants#KEY header. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delimiter* | The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | To get the object from the bucket with the given file name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeBody* | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConnections* | Set the maxConnections parameter in the S3 client configuration | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefix* | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autocloseBody* | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accelerateModeEnabled* | Define if Accelerate Mode enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunkedEncodingDisabled* | Define if disabled Chunked Encoding is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dualstackEnabled* | Define if Dualstack enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forceGlobalBucketAccess Enabled* | Define if Force Global Bucket Access enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.payloadSigningEnabled* | Define if Payload Signing enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.region* | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
+
+== Examples
+
+Here is an example of configuration of the source connector
+
+[source,bash]
+--------------------------------------------------------------------------------
+name=CamelAWSS3SourceConnector
+connector.class=org.apache.camel.kafkaconnector.awss3.CamelAwss3SourceConnector
+key.converter=org.apache.kafka.connect.storage.StringConverter
+value.converter=org.apache.camel.kafkaconnector.awss3.converters.S3ObjectConverter
+
+camel.source.maxPollDuration=10000
+
+camel.source.kafka.topic=mytopic
+
+camel.source.url=aws-s3://camel-kafka-connector?autocloseBody=false
+
+camel.component.aws-s3.access-key=xxxx
+camel.component.aws-s3.secret-key=yyyy
+camel.component.aws-s3.region=EU_WEST_1
+--------------------------------------------------------------------------------
+
+In this example we are polling the bucket camel-kafka-connector as source.
diff --git a/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/converters/S3ObjectConverter.java b/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/converters/S3ObjectConverter.java
new file mode 100644
index 0000000..7ee4802
--- /dev/null
+++ b/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/converters/S3ObjectConverter.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kafkaconnector.awss3.converters;
+
+import java.util.Map;
+
+import com.amazonaws.services.s3.model.S3ObjectInputStream;
+import org.apache.camel.kafkaconnector.awss3.serializers.S3ObjectSerializer;
+import org.apache.kafka.connect.data.Schema;
+import org.apache.kafka.connect.data.SchemaAndValue;
+import org.apache.kafka.connect.storage.Converter;
+
+public class S3ObjectConverter implements Converter {
+
+    private final S3ObjectSerializer serializer = new S3ObjectSerializer();
+
+    @Override
+    public void configure(Map<String, ?> configs, boolean isKey) {
+    }
+
+    @Override
+    public byte[] fromConnectData(String topic, Schema schema, Object value) {
+        return serializer.serialize(topic, (S3ObjectInputStream) value);
+    }
+
+    @Override
+    public SchemaAndValue toConnectData(String arg0, byte[] arg1) {
+        return null;
+    }
+
+}
diff --git a/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/serializers/S3ObjectSerializer.java b/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/serializers/S3ObjectSerializer.java
new file mode 100644
index 0000000..29ea41b
--- /dev/null
+++ b/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/serializers/S3ObjectSerializer.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kafkaconnector.awss3.serializers;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+import com.amazonaws.services.s3.model.S3ObjectInputStream;
+import org.apache.kafka.common.serialization.Serializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class S3ObjectSerializer implements Serializer<S3ObjectInputStream> {
+    private static final Logger LOG = LoggerFactory.getLogger(S3ObjectSerializer.class);
+
+    @Override
+    public void configure(Map<String, ?> configs, boolean isKey) {
+    }
+
+    @Override
+    public byte[] serialize(String topic, S3ObjectInputStream data) {
+        InputStream is = data.getDelegateStream();
+        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+
+        int nRead;
+        byte[] byteArray = new byte[16384];
+
+        try {
+            while ((nRead = is.read(byteArray, 0, byteArray.length)) != -1) {
+                buffer.write(byteArray, 0, nRead);
+            }
+        } catch (IOException e) {
+            LOG.warn("I/O error while serializing data from or to topic {}: {} | {}", topic, e.getMessage(), e);
+        }
+
+        return buffer.toByteArray();
+    }
+
+    @Override
+    public void close() {
+    }
+
+}
diff --git a/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/transforms/S3ObjectTransforms.java b/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/transforms/S3ObjectTransforms.java
new file mode 100644
index 0000000..a40dacc
--- /dev/null
+++ b/connectors/camel-aws-s3-kafka-connector/src/main/java/org/apache/camel/kafkaconnector/awss3/transforms/S3ObjectTransforms.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kafkaconnector.awss3.transforms;
+
+import java.util.Map;
+
+import com.amazonaws.services.s3.model.S3ObjectInputStream;
+import org.apache.camel.kafkaconnector.awss3.serializers.S3ObjectSerializer;
+import org.apache.kafka.common.config.ConfigDef;
+import org.apache.kafka.connect.connector.ConnectRecord;
+import org.apache.kafka.connect.data.Schema;
+import org.apache.kafka.connect.transforms.Transformation;
+
+public class S3ObjectTransforms<R extends ConnectRecord<R>> implements Transformation<R> {
+
+    public static final ConfigDef CONFIG_DEF = new ConfigDef()
+            .define("test", ConfigDef.Type.STRING, "test", ConfigDef.Importance.MEDIUM, "Transform the content of a bucket into a string ");
+
+    private final S3ObjectSerializer serializer = new S3ObjectSerializer();
+
+    @Override
+    public void configure(Map<String, ?> configs) {
+    }
+
+    @Override
+    public R apply(R record) {
+        byte[] v = serializer.serialize(record.topic(), (S3ObjectInputStream) record.value());
+        String finalValue = new String(v);
+        return record.newRecord(record.topic(), record.kafkaPartition(), null, record.key(), Schema.STRING_SCHEMA, finalValue, record.timestamp());
+    }
+
+    @Override
+    public void close() {
+    }
+
+    @Override
+    public ConfigDef config() {
+        return CONFIG_DEF;
+    }
+
+}
diff --git a/connectors/camel-aws-sdb-kafka-connector/pom.xml b/connectors/camel-aws-sdb-kafka-connector/pom.xml
index 2ef86c4..1d2f3c2 100644
--- a/connectors/camel-aws-sdb-kafka-connector/pom.xml
+++ b/connectors/camel-aws-sdb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-sdb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-sdb</name>
diff --git a/connectors/camel-aws-sdb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-sdb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-sdb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-sdb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-sdb-kafka-connector/src/main/docs/camel-aws-sdb-kafka-sink-connector.adoc b/connectors/camel-aws-sdb-kafka-connector/src/main/docs/camel-aws-sdb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1992b65
--- /dev/null
+++ b/connectors/camel-aws-sdb-kafka-connector/src/main/docs/camel-aws-sdb-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-aws-sdb-kafka-connector-sink]]
+= camel-aws-sdb-kafka-connector sink configuration
+
+When using camel-aws-sdb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sdb sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.domainName* | The name of the domain currently worked with. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSDBClient* | To use the AmazonSimpleDB as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistentRead* | Determines whether or not strong consistency should be enforced when data is read. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxNumberOfDomains* | The maximum number of domain names you want returned. The range is 1 to 100. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to perform One of: [BatchDeleteAttributes] [BatchPutAttributes] [DeleteAttributes] [DeleteDomain] [DomainMetadata] [GetAttributes] [ListDomains] [PutAttributes] [Select] | "PutAttributes" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SDB client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SDB client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sdb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-ses-kafka-connector/pom.xml b/connectors/camel-aws-ses-kafka-connector/pom.xml
index 01522b3..f838e0a 100644
--- a/connectors/camel-aws-ses-kafka-connector/pom.xml
+++ b/connectors/camel-aws-ses-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-ses-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-ses</name>
diff --git a/connectors/camel-aws-ses-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-ses-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-ses-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-ses-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-ses-kafka-connector/src/main/docs/camel-aws-ses-kafka-sink-connector.adoc b/connectors/camel-aws-ses-kafka-connector/src/main/docs/camel-aws-ses-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fce1dbd
--- /dev/null
+++ b/connectors/camel-aws-ses-kafka-connector/src/main/docs/camel-aws-ses-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws-ses-kafka-connector-sink]]
+= camel-aws-ses-kafka-connector sink configuration
+
+When using camel-aws-ses-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ses-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ses sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.from* | The sender's email address. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSESClient* | To use the AmazonSimpleEmailService as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SES client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SES client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToAddresses* | List of reply-to email address(es) for the message, override it using 'CamelAwsSesReplyToAddresses' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.returnPath* | The email address to which bounce notifications are to be forwarded, override it using 'CamelAwsSesReturnPath' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSesSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | List of destination email address. Can be overriden with 'CamelAwsSesTo' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.region* | The region in which SES client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.configuration* | The AWS SES default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-sns-kafka-connector/pom.xml b/connectors/camel-aws-sns-kafka-connector/pom.xml
index d57a4c8..fc66ca8 100644
--- a/connectors/camel-aws-sns-kafka-connector/pom.xml
+++ b/connectors/camel-aws-sns-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-sns-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-sns</name>
diff --git a/connectors/camel-aws-sns-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-sns-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-sns-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-sns-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-sns-kafka-connector/src/main/docs/camel-aws-sns-kafka-sink-connector.adoc b/connectors/camel-aws-sns-kafka-connector/src/main/docs/camel-aws-sns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..157bcf2
--- /dev/null
+++ b/connectors/camel-aws-sns-kafka-connector/src/main/docs/camel-aws-sns-kafka-sink-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-aws-sns-kafka-connector-sink]]
+= camel-aws-sns-kafka-connector sink configuration
+
+When using camel-aws-sns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sns sink connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topicNameOrArn* | Topic name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSNSClient* | To use the AmazonSNS as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSQSClient* | An SQS Client to use as bridge between SNS and SQS | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateTopic* | Setting the autocreation of the topic | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageStructure* | The message structure to use such as json | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SNS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | The queueUrl to subscribe to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SNS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the topic | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSnsSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subscribeSNStoSQS* | Define if the subscription between SNS Topic and SQS must be done or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.region* | The region in which SNS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.configuration* | The AWS SNS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-sqs-kafka-connector/pom.xml b/connectors/camel-aws-sqs-kafka-connector/pom.xml
index 7c13393..9f2d08f 100644
--- a/connectors/camel-aws-sqs-kafka-connector/pom.xml
+++ b/connectors/camel-aws-sqs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-sqs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-sqs</name>
diff --git a/connectors/camel-aws-sqs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-sqs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-sqs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-sqs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-sqs-kafka-connector/src/main/docs/camel-aws-sqs-kafka-sink-connector.adoc b/connectors/camel-aws-sqs-kafka-connector/src/main/docs/camel-aws-sqs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d98aaf0
--- /dev/null
+++ b/connectors/camel-aws-sqs-kafka-connector/src/main/docs/camel-aws-sqs-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-aws-sqs-kafka-connector-sink]]
+= camel-aws-sqs-kafka-connector sink configuration
+
+When using camel-aws-sqs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sqs sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delaySeconds* | Delay sending messages for a number of seconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageDeduplicationIdStrategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: useExchangeId, useContentBasedDeduplication. For the useContentBasedDeduplication option, no messageDeduplicationId will be set on the message. One of: [useExchangeId] [useContentBasedDeduplication] | "useExchangeId" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageGroupIdStrategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: useConstant, useExchangeId, usePropertyValue. For the usePropertyValue option, the value of property CamelAwsMessageGroupId will be used. One of: [useConstant] [useExchangeId] [usePropertyValue] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do in case the user don't want to send only a message One of: [sendBatchMessage] [deleteMessage] [listQueues] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveMessageWaitTimeSeconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-sqs-kafka-connector/src/main/docs/camel-aws-sqs-kafka-source-connector.adoc b/connectors/camel-aws-sqs-kafka-connector/src/main/docs/camel-aws-sqs-kafka-source-connector.adoc
new file mode 100644
index 0000000..2336214
--- /dev/null
+++ b/connectors/camel-aws-sqs-kafka-connector/src/main/docs/camel-aws-sqs-kafka-source-connector.adoc
@@ -0,0 +1,86 @@
+// kafka-connector options: START
+[[camel-aws-sqs-kafka-connector-source]]
+= camel-aws-sqs-kafka-connector source configuration
+
+When using camel-aws-sqs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sqs source connector supports 60 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attributeNames* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultVisibilityTimeout* | The default visibility timeout (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteAfterRead* | Delete message from SQS after it has been read | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteIfFiltered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendMessageVisibility* | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsDataKeyReusePeriodSeconds* | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageAttributeNames* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the queue | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.visibilityTimeout* | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitTimeSeconds* | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveMessageWaitTime Seconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-swf-kafka-connector/pom.xml b/connectors/camel-aws-swf-kafka-connector/pom.xml
index 87325d7..0e330d4 100644
--- a/connectors/camel-aws-swf-kafka-connector/pom.xml
+++ b/connectors/camel-aws-swf-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-swf-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-swf</name>
diff --git a/connectors/camel-aws-swf-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-swf-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-swf-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-swf-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-swf-kafka-connector/src/main/docs/camel-aws-swf-kafka-sink-connector.adoc b/connectors/camel-aws-swf-kafka-connector/src/main/docs/camel-aws-swf-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e74eb50
--- /dev/null
+++ b/connectors/camel-aws-swf-kafka-connector/src/main/docs/camel-aws-swf-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-aws-swf-kafka-connector-sink]]
+= camel-aws-swf-kafka-connector sink configuration
+
+When using camel-aws-swf-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-swf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-swf sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | Activity or workflow One of: [activity] [workflow] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSWClient* | To use the given AmazonSimpleWorkflowClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataConverter* | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainName* | The workflow domain to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventName* | The workflow or activity event name to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | Amazon AWS Region. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.version* | The workflow or activity event version to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigurationParameters* | To configure the ClientConfiguration using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.startWorkflowOptionsParameters* | To configure the StartWorkflowOptions using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sWClientParameters* | To configure the AmazonSimpleWorkflowClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.activitySchedulingOptions* | Activity scheduling options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.childPolicy* | The policy to use on child workflows when terminating a workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.executionStartToCloseTimeout* | Set the execution start to close timeout. | "3600" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Workflow operation One of: [SIGNAL] [CANCEL] [TERMINATE] [GET_STATE] [START] [DESCRIBE] [GET_HISTORY] | "START" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signalName* | The name of the signal to send to the workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stateResultType* | The type of the result when a workflow state is queried. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.taskStartToCloseTimeout* | Set the task start to close timeout. | "600" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.terminationDetails* | Details for terminating a workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.terminationReason* | The reason for terminating a workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.region* | Amazon AWS Region. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.configuration* | The AWS SWF default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-swf-kafka-connector/src/main/docs/camel-aws-swf-kafka-source-connector.adoc b/connectors/camel-aws-swf-kafka-connector/src/main/docs/camel-aws-swf-kafka-source-connector.adoc
new file mode 100644
index 0000000..865d284
--- /dev/null
+++ b/connectors/camel-aws-swf-kafka-connector/src/main/docs/camel-aws-swf-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-aws-swf-kafka-connector-source]]
+= camel-aws-swf-kafka-connector source configuration
+
+When using camel-aws-swf-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-swf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-swf source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Activity or workflow One of: [activity] [workflow] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonSWClient* | To use the given AmazonSimpleWorkflowClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataConverter* | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainName* | The workflow domain to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventName* | The workflow or activity event name to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | Amazon AWS Region. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.version* | The workflow or activity event version to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfiguration Parameters* | To configure the ClientConfiguration using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startWorkflowOptions Parameters* | To configure the StartWorkflowOptions using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sWClientParameters* | To configure the AmazonSimpleWorkflowClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityList* | The list name to consume activities from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityThreadPoolSize* | Maximum number of threads in work pool for activity. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityTypeExecutionOptions* | Activity execution options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityTypeRegistration Options* | Activity registration options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workflowList* | The list name to consume workflows from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workflowTypeRegistration Options* | Workflow registration options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.region* | Amazon AWS Region. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.configuration* | The AWS SWF default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws-translate-kafka-connector/pom.xml b/connectors/camel-aws-translate-kafka-connector/pom.xml
index 5776d8a..5be4ad1 100644
--- a/connectors/camel-aws-translate-kafka-connector/pom.xml
+++ b/connectors/camel-aws-translate-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws-translate-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws-translate</name>
diff --git a/connectors/camel-aws-translate-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws-translate-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws-translate-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws-translate-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws-translate-kafka-connector/src/main/docs/camel-aws-translate-kafka-sink-connector.adoc b/connectors/camel-aws-translate-kafka-connector/src/main/docs/camel-aws-translate-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2a340bc
--- /dev/null
+++ b/connectors/camel-aws-translate-kafka-connector/src/main/docs/camel-aws-translate-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws-translate-kafka-connector-sink]]
+= camel-aws-translate-kafka-connector sink configuration
+
+When using camel-aws-translate-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-translate-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-translate sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autodetectSourceLanguage* | Being able to autodetect the source language | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [translateText] | "translateText" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Translate client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Translate client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceLanguage* | Source language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetLanguage* | Target language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.translateClient* | To use a existing configured AWS Translate as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.region* | The region in which Translate client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.configuration* | The AWS Translate default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-cw-kafka-connector/pom.xml b/connectors/camel-aws2-cw-kafka-connector/pom.xml
index 7404e16..241dfe1 100644
--- a/connectors/camel-aws2-cw-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-cw-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-cw-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-cw</name>
diff --git a/connectors/camel-aws2-cw-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-cw-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-cw-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-cw-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-cw-kafka-connector/src/main/docs/camel-aws2-cw-kafka-sink-connector.adoc b/connectors/camel-aws2-cw-kafka-connector/src/main/docs/camel-aws2-cw-kafka-sink-connector.adoc
new file mode 100644
index 0000000..13ab93e
--- /dev/null
+++ b/connectors/camel-aws2-cw-kafka-connector/src/main/docs/camel-aws2-cw-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws2-cw-kafka-connector-sink]]
+= camel-aws2-cw-kafka-connector sink configuration
+
+When using camel-aws2-cw-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-cw-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-cw sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.namespace* | The metric namespace | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonCwClient* | To use the AmazonCloudWatch as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the CW client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timestamp* | The metric timestamp | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.unit* | The metric unit | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | The metric value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.region* | The region in which CW client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.configuration* | The AWS CW default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-ddb-kafka-connector/pom.xml b/connectors/camel-aws2-ddb-kafka-connector/pom.xml
index 25e4719..62eb324 100644
--- a/connectors/camel-aws2-ddb-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-ddb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-ddb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-ddb</name>
diff --git a/connectors/camel-aws2-ddb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-ddb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-ddb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-ddb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-ddb-kafka-connector/src/main/docs/camel-aws2-ddb-kafka-sink-connector.adoc b/connectors/camel-aws2-ddb-kafka-connector/src/main/docs/camel-aws2-ddb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6290567
--- /dev/null
+++ b/connectors/camel-aws2-ddb-kafka-connector/src/main/docs/camel-aws2-ddb-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-aws2-ddb-kafka-connector-sink]]
+= camel-aws2-ddb-kafka-connector sink configuration
+
+When using camel-aws2-ddb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ddb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ddb sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.tableName* | The name of the table currently worked with. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonDDBClient* | To use the AmazonDynamoDB as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistentRead* | Determines whether or not strong consistency should be enforced when data is read. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeName* | Attribute name when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeType* | Attribute type when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | What operation to perform One of: [BatchGetItems] [DeleteItem] [DeleteTable] [DescribeTable] [GetItem] [PutItem] [Query] [Scan] [UpdateItem] [UpdateTable] | "PutItem" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the DDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The region in which DynamoDB client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDB client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readCapacity* | The provisioned throughput to reserve for reading resources from your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeCapacity* | The provisioned throughput to reserved for writing resources to your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.configuration* | The AWS DDB default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-ddbstream-kafka-connector/pom.xml b/connectors/camel-aws2-ddbstream-kafka-connector/pom.xml
index 124dc4f..622aa57 100644
--- a/connectors/camel-aws2-ddbstream-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-ddbstream-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-ddbstream-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-ddbstream</name>
diff --git a/connectors/camel-aws2-ddbstream-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-ddbstream-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-ddbstream-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-ddbstream-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-ddbstream-kafka-connector/src/main/docs/camel-aws2-ddbstream-kafka-source-connector.adoc b/connectors/camel-aws2-ddbstream-kafka-connector/src/main/docs/camel-aws2-ddbstream-kafka-source-connector.adoc
new file mode 100644
index 0000000..a66f2a5
--- /dev/null
+++ b/connectors/camel-aws2-ddbstream-kafka-connector/src/main/docs/camel-aws2-ddbstream-kafka-source-connector.adoc
@@ -0,0 +1,64 @@
+// kafka-connector options: START
+[[camel-aws2-ddbstream-kafka-connector-source]]
+= camel-aws2-ddbstream-kafka-connector source configuration
+
+When using camel-aws2-ddbstream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ddbstream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ddbstream source connector supports 38 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.tableName* | Name of the dynamodb table | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonDynamoDbStreamsClient* | Amazon DynamoDB client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.iteratorType* | Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if {AT,AFTER}_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. One of: [TRIM_HORIZON] [LATEST] [AT_SEQUENCE_NUMBER] [AFTER_SEQUENCE_NUMBER] [null] | "LATEST" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResultsPerRequest* | Maximum number of records that will be fetched in each poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDBStreams client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which DDBStreams client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sequenceNumberProvider* | Provider for the sequence number when using one of the two ShardIteratorType.{AT,AFTER}_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.configuration* | The AWS DDB stream default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-ec2-kafka-connector/pom.xml b/connectors/camel-aws2-ec2-kafka-connector/pom.xml
index bf69ff1..3777a16 100644
--- a/connectors/camel-aws2-ec2-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-ec2-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-ec2-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-ec2</name>
diff --git a/connectors/camel-aws2-ec2-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-ec2-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-ec2-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-ec2-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-ec2-kafka-connector/src/main/docs/camel-aws2-ec2-kafka-sink-connector.adoc b/connectors/camel-aws2-ec2-kafka-connector/src/main/docs/camel-aws2-ec2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9091c61
--- /dev/null
+++ b/connectors/camel-aws2-ec2-kafka-connector/src/main/docs/camel-aws2-ec2-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-ec2-kafka-connector-sink]]
+= camel-aws2-ec2-kafka-connector sink configuration
+
+When using camel-aws2-ec2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ec2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ec2 sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonEc2Client* | To use a existing configured AmazonEC2Client as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags One of: [createAndRunInstances] [startInstances] [stopInstances] [terminateInstances] [describeInstances] [describeInstancesStatus] [rebootInstances] [monitorInstances] [unmonitorInstances] [createTags] [deleteTags] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EC2 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EC2 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.region* | The region in which EC2 client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.configuration* | The AWS EC2 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-ecs-kafka-connector/pom.xml b/connectors/camel-aws2-ecs-kafka-connector/pom.xml
index 700f1e2..66fa5fd 100644
--- a/connectors/camel-aws2-ecs-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-ecs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-ecs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-ecs</name>
diff --git a/connectors/camel-aws2-ecs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-ecs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-ecs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-ecs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-ecs-kafka-connector/src/main/docs/camel-aws2-ecs-kafka-sink-connector.adoc b/connectors/camel-aws2-ecs-kafka-connector/src/main/docs/camel-aws2-ecs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0c1210a
--- /dev/null
+++ b/connectors/camel-aws2-ecs-kafka-connector/src/main/docs/camel-aws2-ecs-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-ecs-kafka-connector-sink]]
+= camel-aws2-ecs-kafka-connector sink configuration
+
+When using camel-aws2-ecs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ecs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ecs sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ecsClient* | To use a existing configured AWS ECS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the ECS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.region* | The region in which ECS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.configuration* | The AWS ECS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-eks-kafka-connector/pom.xml b/connectors/camel-aws2-eks-kafka-connector/pom.xml
index cc82d0a..37c4ce3 100644
--- a/connectors/camel-aws2-eks-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-eks-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-eks-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-eks</name>
diff --git a/connectors/camel-aws2-eks-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-eks-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-eks-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-eks-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-eks-kafka-connector/src/main/docs/camel-aws2-eks-kafka-sink-connector.adoc b/connectors/camel-aws2-eks-kafka-connector/src/main/docs/camel-aws2-eks-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6d1c411
--- /dev/null
+++ b/connectors/camel-aws2-eks-kafka-connector/src/main/docs/camel-aws2-eks-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-eks-kafka-connector-sink]]
+= camel-aws2-eks-kafka-connector sink configuration
+
+When using camel-aws2-eks-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-eks-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-eks sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eksClient* | To use a existing configured AWS EKS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EKS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.region* | The region in which EKS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.configuration* | The AWS EKS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-iam-kafka-connector/pom.xml b/connectors/camel-aws2-iam-kafka-connector/pom.xml
index 7dbe5cd..0afd47c 100644
--- a/connectors/camel-aws2-iam-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-iam-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-iam-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-iam</name>
diff --git a/connectors/camel-aws2-iam-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-iam-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-iam-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-iam-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-iam-kafka-connector/src/main/docs/camel-aws2-iam-kafka-sink-connector.adoc b/connectors/camel-aws2-iam-kafka-connector/src/main/docs/camel-aws2-iam-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2520de6
--- /dev/null
+++ b/connectors/camel-aws2-iam-kafka-connector/src/main/docs/camel-aws2-iam-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-iam-kafka-connector-sink]]
+= camel-aws2-iam-kafka-connector sink configuration
+
+When using camel-aws2-iam-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-iam-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-iam sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.iamClient* | To use a existing configured AWS IAM as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listAccessKeys] [createUser] [deleteUser] [getUser] [listUsers] [createAccessKey] [deleteAccessKey] [updateAccessKey] [createGroup] [deleteGroup] [listGroups] [addUserToGroup] [removeUserFromGroup] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the IAM client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which IAM client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.region* | The region in which IAM client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.configuration* | The AWS IAM default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-kms-kafka-connector/pom.xml b/connectors/camel-aws2-kms-kafka-connector/pom.xml
index f1c9c02..9926650 100644
--- a/connectors/camel-aws2-kms-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-kms-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-kms-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-kms</name>
diff --git a/connectors/camel-aws2-kms-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-kms-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-kms-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-kms-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-kms-kafka-connector/src/main/docs/camel-aws2-kms-kafka-sink-connector.adoc b/connectors/camel-aws2-kms-kafka-connector/src/main/docs/camel-aws2-kms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..58da2bf
--- /dev/null
+++ b/connectors/camel-aws2-kms-kafka-connector/src/main/docs/camel-aws2-kms-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-kms-kafka-connector-sink]]
+= camel-aws2-kms-kafka-connector sink configuration
+
+When using camel-aws2-kms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-kms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-kms sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsClient* | To use a existing configured AWS KMS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listKeys] [createKey] [disableKey] [scheduleKeyDeletion] [describeKey] [enableKey] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the KMS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.region* | The region in which KMS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.configuration* | The AWS KMS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-mq-kafka-connector/pom.xml b/connectors/camel-aws2-mq-kafka-connector/pom.xml
index 1b70b29..349f1f7 100644
--- a/connectors/camel-aws2-mq-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-mq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-mq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-mq</name>
diff --git a/connectors/camel-aws2-mq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-mq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-mq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-mq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-mq-kafka-connector/src/main/docs/camel-aws2-mq-kafka-sink-connector.adoc b/connectors/camel-aws2-mq-kafka-connector/src/main/docs/camel-aws2-mq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..21c6acd
--- /dev/null
+++ b/connectors/camel-aws2-mq-kafka-connector/src/main/docs/camel-aws2-mq-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-mq-kafka-connector-sink]]
+= camel-aws2-mq-kafka-connector sink configuration
+
+When using camel-aws2-mq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-mq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-mq sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonMqClient* | To use a existing configured AmazonMQClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be listBrokers,createBroker,deleteBroker One of: [listBrokers] [createBroker] [deleteBroker] [rebootBroker] [updateBroker] [describeBroker] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MQ client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MQ client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.region* | The region in which MQ client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.configuration* | The AWS MQ default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-msk-kafka-connector/pom.xml b/connectors/camel-aws2-msk-kafka-connector/pom.xml
index c1d9783..a939eeb 100644
--- a/connectors/camel-aws2-msk-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-msk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-msk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-msk</name>
diff --git a/connectors/camel-aws2-msk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-msk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-msk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-msk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-msk-kafka-connector/src/main/docs/camel-aws2-msk-kafka-sink-connector.adoc b/connectors/camel-aws2-msk-kafka-connector/src/main/docs/camel-aws2-msk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..33038b0
--- /dev/null
+++ b/connectors/camel-aws2-msk-kafka-connector/src/main/docs/camel-aws2-msk-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-msk-kafka-connector-sink]]
+= camel-aws2-msk-kafka-connector sink configuration
+
+When using camel-aws2-msk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-msk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-msk sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mskClient* | To use a existing configured AWS MSK as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [createCluster] [deleteCluster] [describeCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MSK client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MSK client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.region* | The region in which MSK client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.configuration* | The AWS MSK default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-ses-kafka-connector/pom.xml b/connectors/camel-aws2-ses-kafka-connector/pom.xml
index 9c3035a..db7b4ac 100644
--- a/connectors/camel-aws2-ses-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-ses-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-ses-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-ses</name>
diff --git a/connectors/camel-aws2-ses-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-ses-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-ses-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-ses-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-ses-kafka-connector/src/main/docs/camel-aws2-ses-kafka-sink-connector.adoc b/connectors/camel-aws2-ses-kafka-connector/src/main/docs/camel-aws2-ses-kafka-sink-connector.adoc
new file mode 100644
index 0000000..13339a2
--- /dev/null
+++ b/connectors/camel-aws2-ses-kafka-connector/src/main/docs/camel-aws2-ses-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws2-ses-kafka-connector-sink]]
+= camel-aws2-ses-kafka-connector sink configuration
+
+When using camel-aws2-ses-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ses-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ses sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.from* | The sender's email address. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSESClient* | To use the AmazonSimpleEmailService as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SES client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SES client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToAddresses* | List of reply-to email address(es) for the message, override it using 'CamelAwsSesReplyToAddresses' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.returnPath* | The email address to which bounce notifications are to be forwarded, override it using 'CamelAwsSesReturnPath' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSesSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | List of destination email address. Can be overriden with 'CamelAwsSesTo' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.region* | The region in which SES client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.configuration* | The AWS SES default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-sns-kafka-connector/pom.xml b/connectors/camel-aws2-sns-kafka-connector/pom.xml
index a12bf6b..ae98621 100644
--- a/connectors/camel-aws2-sns-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-sns-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-sns-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-sns</name>
diff --git a/connectors/camel-aws2-sns-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-sns-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-sns-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-sns-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-sns-kafka-connector/src/main/docs/camel-aws2-sns-kafka-sink-connector.adoc b/connectors/camel-aws2-sns-kafka-connector/src/main/docs/camel-aws2-sns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..11fdc78
--- /dev/null
+++ b/connectors/camel-aws2-sns-kafka-connector/src/main/docs/camel-aws2-sns-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-aws2-sns-kafka-connector-sink]]
+= camel-aws2-sns-kafka-connector sink configuration
+
+When using camel-aws2-sns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-sns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-sns sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topicNameOrArn* | Topic name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSNSClient* | To use the AmazonSNS as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateTopic* | Setting the autocreation of the topic | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageStructure* | The message structure to use such as json | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SNS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | The queueUrl to subscribe to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SNS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the topic | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSnsSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subscribeSNStoSQS* | Define if the subscription between SNS Topic and SQS must be done or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.region* | The region in which SNS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.configuration* | The AWS SNS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-sqs-kafka-connector/pom.xml b/connectors/camel-aws2-sqs-kafka-connector/pom.xml
index cb37822..d8c800c 100644
--- a/connectors/camel-aws2-sqs-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-sqs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-sqs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-sqs</name>
diff --git a/connectors/camel-aws2-sqs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-sqs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-sqs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-sqs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-sqs-kafka-connector/src/main/docs/camel-aws2-sqs-kafka-sink-connector.adoc b/connectors/camel-aws2-sqs-kafka-connector/src/main/docs/camel-aws2-sqs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e97db7d
--- /dev/null
+++ b/connectors/camel-aws2-sqs-kafka-connector/src/main/docs/camel-aws2-sqs-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-aws2-sqs-kafka-connector-sink]]
+= camel-aws2-sqs-kafka-connector sink configuration
+
+When using camel-aws2-sqs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-sqs sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delaySeconds* | Delay sending messages for a number of seconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageDeduplicationIdStrategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: useExchangeId, useContentBasedDeduplication. For the useContentBasedDeduplication option, no messageDeduplicationId will be set on the message. One of: [useExchangeId] [useContentBasedDeduplication] | "useExchangeId" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageGroupIdStrategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: useConstant, useExchangeId, usePropertyValue. For the usePropertyValue option, the value of property CamelAwsMessageGroupId will be used. One of: [useConstant] [useExchangeId] [usePropertyValue] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do in case the user don't want to send only a message One of: [sendBatchMessage] [deleteMessage] [listQueues] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveMessageWaitTimeSeconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-sqs-kafka-connector/src/main/docs/camel-aws2-sqs-kafka-source-connector.adoc b/connectors/camel-aws2-sqs-kafka-connector/src/main/docs/camel-aws2-sqs-kafka-source-connector.adoc
new file mode 100644
index 0000000..bd55a6f
--- /dev/null
+++ b/connectors/camel-aws2-sqs-kafka-connector/src/main/docs/camel-aws2-sqs-kafka-source-connector.adoc
@@ -0,0 +1,86 @@
+// kafka-connector options: START
+[[camel-aws2-sqs-kafka-connector-source]]
+= camel-aws2-sqs-kafka-connector source configuration
+
+When using camel-aws2-sqs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-sqs source connector supports 60 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attributeNames* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultVisibilityTimeout* | The default visibility timeout (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteAfterRead* | Delete message from SQS after it has been read | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteIfFiltered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendMessageVisibility* | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsDataKeyReusePeriodSeconds* | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageAttributeNames* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the queue | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.visibilityTimeout* | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitTimeSeconds* | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveMessageWaitTime Seconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-aws2-translate-kafka-connector/pom.xml b/connectors/camel-aws2-translate-kafka-connector/pom.xml
index 7049db1..8e5a71e 100644
--- a/connectors/camel-aws2-translate-kafka-connector/pom.xml
+++ b/connectors/camel-aws2-translate-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-aws2-translate-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: aws2-translate</name>
diff --git a/connectors/camel-aws2-translate-kafka-connector/src/main/assembly/package.xml b/connectors/camel-aws2-translate-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-aws2-translate-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-aws2-translate-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-aws2-translate-kafka-connector/src/main/docs/camel-aws2-translate-kafka-sink-connector.adoc b/connectors/camel-aws2-translate-kafka-connector/src/main/docs/camel-aws2-translate-kafka-sink-connector.adoc
new file mode 100644
index 0000000..21cdc2b
--- /dev/null
+++ b/connectors/camel-aws2-translate-kafka-connector/src/main/docs/camel-aws2-translate-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws2-translate-kafka-connector-sink]]
+= camel-aws2-translate-kafka-connector sink configuration
+
+When using camel-aws2-translate-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-translate-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-translate sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autodetectSourceLanguage* | Being able to autodetect the source language | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [translateText] | "translateText" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Translate client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Translate client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceLanguage* | Source language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetLanguage* | Target language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.translateClient* | To use a existing configured AWS Translate as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.region* | The region in which Translate client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.configuration* | The AWS Translate default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-azure-blob-kafka-connector/pom.xml b/connectors/camel-azure-blob-kafka-connector/pom.xml
index 2b399ce..05c2467 100644
--- a/connectors/camel-azure-blob-kafka-connector/pom.xml
+++ b/connectors/camel-azure-blob-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-azure-blob-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: azure-blob</name>
diff --git a/connectors/camel-azure-blob-kafka-connector/src/main/assembly/package.xml b/connectors/camel-azure-blob-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-azure-blob-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-azure-blob-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-azure-blob-kafka-connector/src/main/docs/camel-azure-blob-kafka-sink-connector.adoc b/connectors/camel-azure-blob-kafka-connector/src/main/docs/camel-azure-blob-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5a0278f
--- /dev/null
+++ b/connectors/camel-azure-blob-kafka-connector/src/main/docs/camel-azure-blob-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-azure-blob-kafka-connector-sink]]
+= camel-azure-blob-kafka-connector sink configuration
+
+When using camel-azure-blob-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-blob-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-blob sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.containerOrBlobUri* | Container or Blob compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.azureBlobClient* | The blob service client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobOffset* | Set the blob offset for the upload or download operations, default is 0 | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobType* | Set a blob type, 'blockblob' is default One of: [blockblob] [appendblob] [pageblob] | "blockblob" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.closeStreamAfterRead* | Close the stream after read or keep it open, default is true | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataLength* | Set the data length for the download or page blob upload operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileDir* | Set the file directory where the downloaded blobs will be saved to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicForRead* | Storage resources can be public for reading their content, if this property is enabled then the credentials do not have to be set | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamReadSize* | Set the minimum read size in bytes when reading the blob content | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobMetadata* | Set the blob meta-data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobPrefix* | Set a prefix which can be used for listing the blobs | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.closeStreamAfterWrite* | Close the stream after write or keep it open, default is true | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Blob service operation hint to the producer One of: [getBlob] [deleteBlob] [listBlobs] [updateBlockBlob] [uploadBlobBlocks] [commitBlobBlockList] [getBlobBlockList] [createAppendBlob] [updateAppendBlob] [createPageBlob] [updatePageBlob] [resizePageBlob] [clearPageBlob] [getPageBlobRanges] | "listBlobs" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamWriteSize* | Set the size of the buffer for writing block and page blocks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useFlatListing* | Specify if the flat or hierarchical blob listing should be used | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.configuration* | The Blob Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-azure-blob-kafka-connector/src/main/docs/camel-azure-blob-kafka-source-connector.adoc b/connectors/camel-azure-blob-kafka-connector/src/main/docs/camel-azure-blob-kafka-source-connector.adoc
new file mode 100644
index 0000000..89cb815
--- /dev/null
+++ b/connectors/camel-azure-blob-kafka-connector/src/main/docs/camel-azure-blob-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-azure-blob-kafka-connector-source]]
+= camel-azure-blob-kafka-connector source configuration
+
+When using camel-azure-blob-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-blob-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-blob source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.containerOrBlobUri* | Container or Blob compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.azureBlobClient* | The blob service client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blobOffset* | Set the blob offset for the upload or download operations, default is 0 | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blobType* | Set a blob type, 'blockblob' is default One of: [blockblob] [appendblob] [pageblob] | "blockblob" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeStreamAfterRead* | Close the stream after read or keep it open, default is true | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataLength* | Set the data length for the download or page blob upload operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileDir* | Set the file directory where the downloaded blobs will be saved to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicForRead* | Storage resources can be public for reading their content, if this property is enabled then the credentials do not have to be set | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamReadSize* | Set the minimum read size in bytes when reading the blob content | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.configuration* | The Blob Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-azure-queue-kafka-connector/pom.xml b/connectors/camel-azure-queue-kafka-connector/pom.xml
index a2eead1..c572680 100644
--- a/connectors/camel-azure-queue-kafka-connector/pom.xml
+++ b/connectors/camel-azure-queue-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-azure-queue-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: azure-queue</name>
diff --git a/connectors/camel-azure-queue-kafka-connector/src/main/assembly/package.xml b/connectors/camel-azure-queue-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-azure-queue-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-azure-queue-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-azure-queue-kafka-connector/src/main/docs/camel-azure-queue-kafka-sink-connector.adoc b/connectors/camel-azure-queue-kafka-connector/src/main/docs/camel-azure-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d02ebf3
--- /dev/null
+++ b/connectors/camel-azure-queue-kafka-connector/src/main/docs/camel-azure-queue-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-azure-queue-kafka-connector-sink]]
+= camel-azure-queue-kafka-connector sink configuration
+
+When using camel-azure-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-queue sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.containerAndQueueUri* | Container Queue compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.azureQueueClient* | The queue service client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimeToLive* | Message Time To Live in seconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageVisibilityDelay* | Message Visibility Delay in seconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Queue service operation hint to the producer One of: [listQueues] [createQueue] [deleteQueue] [addMessage] [retrieveMessage] [peekMessage] [updateMessage] [deleteMessage] | "listQueues" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queuePrefix* | Set a prefix which can be used for listing the queues | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.configuration* | The Queue Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-azure-queue-kafka-connector/src/main/docs/camel-azure-queue-kafka-source-connector.adoc b/connectors/camel-azure-queue-kafka-connector/src/main/docs/camel-azure-queue-kafka-source-connector.adoc
new file mode 100644
index 0000000..8491989
--- /dev/null
+++ b/connectors/camel-azure-queue-kafka-connector/src/main/docs/camel-azure-queue-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-azure-queue-kafka-connector-source]]
+= camel-azure-queue-kafka-connector source configuration
+
+When using camel-azure-queue-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-queue source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.containerAndQueueUri* | Container Queue compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.azureQueueClient* | The queue service client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.configuration* | The Queue Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-bean-kafka-connector/pom.xml b/connectors/camel-bean-kafka-connector/pom.xml
index 0fe43fe..418db9a 100644
--- a/connectors/camel-bean-kafka-connector/pom.xml
+++ b/connectors/camel-bean-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-bean-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: bean</name>
diff --git a/connectors/camel-bean-kafka-connector/src/main/assembly/package.xml b/connectors/camel-bean-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-bean-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-bean-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-bean-kafka-connector/src/main/docs/camel-bean-kafka-sink-connector.adoc b/connectors/camel-bean-kafka-connector/src/main/docs/camel-bean-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ef39265
--- /dev/null
+++ b/connectors/camel-bean-kafka-connector/src/main/docs/camel-bean-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-bean-kafka-connector-sink]]
+= camel-bean-kafka-connector sink configuration
+
+When using camel-bean-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-bean-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-bean sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanName* | Sets the name of the bean to invoke | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cache* | Use scope option instead. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.method* | Sets the name of the method to invoke on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Used for configuring additional properties on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean.cache* | Use singleton option instead. | "true" | ConfigDef.Importance.LOW
+| *camel.component.bean.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using delegate scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.component.bean.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-bean-validator-kafka-connector/pom.xml b/connectors/camel-bean-validator-kafka-connector/pom.xml
index a9643f6..2e3f498 100644
--- a/connectors/camel-bean-validator-kafka-connector/pom.xml
+++ b/connectors/camel-bean-validator-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-bean-validator-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: bean-validator</name>
diff --git a/connectors/camel-bean-validator-kafka-connector/src/main/assembly/package.xml b/connectors/camel-bean-validator-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-bean-validator-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-bean-validator-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-bean-validator-kafka-connector/src/main/docs/camel-bean-validator-kafka-sink-connector.adoc b/connectors/camel-bean-validator-kafka-connector/src/main/docs/camel-bean-validator-kafka-sink-connector.adoc
new file mode 100644
index 0000000..939cf3e
--- /dev/null
+++ b/connectors/camel-bean-validator-kafka-connector/src/main/docs/camel-bean-validator-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-bean-validator-kafka-connector-sink]]
+= camel-bean-validator-kafka-connector sink configuration
+
+When using camel-bean-validator-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-bean-validator-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-bean-validator sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Where label is an arbitrary text value describing the endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.group* | To use a custom validation group | "javax.validation.groups.Default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreXmlConfiguration* | Whether to ignore data from the META-INF/validation.xml file. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.constraintValidatorFactory* | To use a custom ConstraintValidatorFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageInterpolator* | To use a custom MessageInterpolator | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.traversableResolver* | To use a custom TraversableResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validationProviderResolver* | To use a a custom ValidationProviderResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validatorFactory* | To use a custom ValidatorFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.ignoreXml Configuration* | Whether to ignore data from the META-INF/validation.xml file. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.constraintValidator Factory* | To use a custom ConstraintValidatorFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.messageInterpolator* | To use a custom MessageInterpolator | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.traversableResolver* | To use a custom TraversableResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.validationProvider Resolver* | To use a a custom ValidationProviderResolver | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-beanstalk-kafka-connector/pom.xml b/connectors/camel-beanstalk-kafka-connector/pom.xml
index 004cdd0..4a93822 100644
--- a/connectors/camel-beanstalk-kafka-connector/pom.xml
+++ b/connectors/camel-beanstalk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-beanstalk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: beanstalk</name>
diff --git a/connectors/camel-beanstalk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-beanstalk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-beanstalk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-beanstalk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-beanstalk-kafka-connector/src/main/docs/camel-beanstalk-kafka-sink-connector.adoc b/connectors/camel-beanstalk-kafka-connector/src/main/docs/camel-beanstalk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4a8a352
--- /dev/null
+++ b/connectors/camel-beanstalk-kafka-connector/src/main/docs/camel-beanstalk-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-beanstalk-kafka-connector-sink]]
+= camel-beanstalk-kafka-connector sink configuration
+
+When using camel-beanstalk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-beanstalk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-beanstalk sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionSettings* | Connection settings host:port/tube | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.command* | put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned in beanstalk.jobId message header. delete, release, touch or bury expect Job ID in the message header beanstalk.jobId. Result of the operation is returned in beanstalk.result message header kick expects the number of jobs to kick in the message body and returns the number of jobs actually kicked out in the message header beanstalk.result. One of: [bury] [release] [put] [touch] [delete] [kick] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobDelay* | Job delay in seconds. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobPriority* | Job priority. (0 is the highest, see Beanstalk protocol) | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobTimeToRun* | Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.connectionSettings Factory* | Custom ConnectionSettingsFactory. Specify which ConnectionSettingsFactory to use to make connections to Beanstalkd. Especially useful for unit testing without beanstalkd daemon (you can mock ConnectionSettings) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-beanstalk-kafka-connector/src/main/docs/camel-beanstalk-kafka-source-connector.adoc b/connectors/camel-beanstalk-kafka-connector/src/main/docs/camel-beanstalk-kafka-source-connector.adoc
new file mode 100644
index 0000000..5c93f8e
--- /dev/null
+++ b/connectors/camel-beanstalk-kafka-connector/src/main/docs/camel-beanstalk-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-beanstalk-kafka-connector-source]]
+= camel-beanstalk-kafka-connector source configuration
+
+When using camel-beanstalk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-beanstalk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-beanstalk source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionSettings* | Connection settings host:port/tube | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.command* | put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned in beanstalk.jobId message header. delete, release, touch or bury expect Job ID in the message header beanstalk.jobId. Result of the operation is returned in beanstalk.result message header kick expects the number of jobs to kick in the message body and returns the number of jobs actually kicked out in the message header beanstalk.result. One of: [bury] [release] [put] [touch] [delete] [kick] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobDelay* | Job delay in seconds. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobPriority* | Job priority. (0 is the highest, see Beanstalk protocol) | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobTimeToRun* | Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.awaitJob* | Whether to wait for job to complete before ack the job from beanstalk | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onFailure* | Command to use when processing failed. One of: [bury] [release] [put] [touch] [delete] [kick] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useBlockIO* | Whether to use blockIO. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.connectionSettings Factory* | Custom ConnectionSettingsFactory. Specify which ConnectionSettingsFactory to use to make connections to Beanstalkd. Especially useful for unit testing without beanstalkd daemon (you can mock ConnectionSettings) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-bonita-kafka-connector/pom.xml b/connectors/camel-bonita-kafka-connector/pom.xml
index 35194a1..aa1f07c 100644
--- a/connectors/camel-bonita-kafka-connector/pom.xml
+++ b/connectors/camel-bonita-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-bonita-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: bonita</name>
diff --git a/connectors/camel-bonita-kafka-connector/src/main/assembly/package.xml b/connectors/camel-bonita-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-bonita-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-bonita-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-bonita-kafka-connector/src/main/docs/camel-bonita-kafka-sink-connector.adoc b/connectors/camel-bonita-kafka-connector/src/main/docs/camel-bonita-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6f91443
--- /dev/null
+++ b/connectors/camel-bonita-kafka-connector/src/main/docs/camel-bonita-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-bonita-kafka-connector-sink]]
+= camel-bonita-kafka-connector sink configuration
+
+When using camel-bonita-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-bonita-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-bonita sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Operation to use One of: [startCase] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.hostname* | Hostname where Bonita engine runs | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | Port of the server hosting Bonita engine | "8080" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.processName* | Name of the process involved in the operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to authenticate to Bonita engine. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to authenticate to Bonita engine. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bonita.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bonita.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-box-kafka-connector/pom.xml b/connectors/camel-box-kafka-connector/pom.xml
index d11c0b2..6cf827d 100644
--- a/connectors/camel-box-kafka-connector/pom.xml
+++ b/connectors/camel-box-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-box-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: box</name>
diff --git a/connectors/camel-box-kafka-connector/src/main/assembly/package.xml b/connectors/camel-box-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-box-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-box-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-box-kafka-connector/src/main/docs/camel-box-kafka-sink-connector.adoc b/connectors/camel-box-kafka-connector/src/main/docs/camel-box-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f09dd4f
--- /dev/null
+++ b/connectors/camel-box-kafka-connector/src/main/docs/camel-box-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-box-kafka-connector-sink]]
+= camel-box-kafka-connector sink configuration
+
+When using camel-box-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-box-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-box sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [COLLABORATIONS] [COMMENTS] [EVENT_LOGS] [FILES] [FOLDERS] [GROUPS] [EVENTS] [SEARCH] [TASKS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Box application client ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enterpriseId* | The enterprise ID to use for an App Enterprise. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId* | The user ID to use for an App User. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpParams* | Custom HTTP params for settings like proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenCache* | Custom Access Token Cache for storing and retrieving access tokens. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Box application client secret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptionAlgorithm* | The type of encryption algorithm for JWT. Supported Algorithms: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512 One of: [RSA_SHA_256] [RSA_SHA_384] [RSA_SHA_512] | "RSA_SHA_256" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxCacheEntries* | The maximum number of access tokens in cache. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationType* | The type of authentication for connection. Types of Authentication: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens | "APP_USER_AUTHENTICATION" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFile* | The private key for generating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyPassword* | The password for the private key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKeyId* | The ID for public key for validating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Box user name, MUST be provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userPassword* | Box user password, MUST be provided if authSecureStorage is not set, or returns null on first call | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.box.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-box-kafka-connector/src/main/docs/camel-box-kafka-source-connector.adoc b/connectors/camel-box-kafka-connector/src/main/docs/camel-box-kafka-source-connector.adoc
new file mode 100644
index 0000000..1c171dd
--- /dev/null
+++ b/connectors/camel-box-kafka-connector/src/main/docs/camel-box-kafka-source-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-box-kafka-connector-source]]
+= camel-box-kafka-connector source configuration
+
+When using camel-box-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-box-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-box source connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [COLLABORATIONS] [COMMENTS] [EVENT_LOGS] [FILES] [FOLDERS] [GROUPS] [EVENTS] [SEARCH] [TASKS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Box application client ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enterpriseId* | The enterprise ID to use for an App Enterprise. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | The user ID to use for an App User. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpParams* | Custom HTTP params for settings like proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenCache* | Custom Access Token Cache for storing and retrieving access tokens. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Box application client secret | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptionAlgorithm* | The type of encryption algorithm for JWT. Supported Algorithms: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512 One of: [RSA_SHA_256] [RSA_SHA_384] [RSA_SHA_512] | "RSA_SHA_256" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxCacheEntries* | The maximum number of access tokens in cache. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationType* | The type of authentication for connection. Types of Authentication: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens | "APP_USER_AUTHENTICATION" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyFile* | The private key for generating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyPassword* | The password for the private key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKeyId* | The ID for public key for validating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Box user name, MUST be provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userPassword* | Box user password, MUST be provided if authSecureStorage is not set, or returns null on first call | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.box.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-braintree-kafka-connector/pom.xml b/connectors/camel-braintree-kafka-connector/pom.xml
index 05f6ee4..de49951 100644
--- a/connectors/camel-braintree-kafka-connector/pom.xml
+++ b/connectors/camel-braintree-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-braintree-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: braintree</name>
diff --git a/connectors/camel-braintree-kafka-connector/src/main/assembly/package.xml b/connectors/camel-braintree-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-braintree-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-braintree-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-braintree-kafka-connector/src/main/docs/camel-braintree-kafka-sink-connector.adoc b/connectors/camel-braintree-kafka-connector/src/main/docs/camel-braintree-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7e495f7
--- /dev/null
+++ b/connectors/camel-braintree-kafka-connector/src/main/docs/camel-braintree-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-braintree-kafka-connector-sink]]
+= camel-braintree-kafka-connector sink configuration
+
+When using camel-braintree-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-braintree-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-braintree sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [ADDON] [ADDRESS] [CLIENTTOKEN] [CREDITCARDVERIFICATION] [CUSTOMER] [DISCOUNT] [DISPUTE] [DOCUMENTUPLOAD] [MERCHANTACCOUNT] [PAYMENTMETHOD] [PAYMENTMETHODNONCE] [PLAN] [REPORT] [SETTLEMENTBATCHSUMMARY] [SUBSCRIPTION] [TRANSACTION] [WEBHOOKNOTIFICATION] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.environment* | The environment Either SANDBOX or PRODUCTION | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.merchantId* | The merchant id provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpReadTimeout* | Set read timeout for http calls. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpLogLevel* | Set logging level for http calls, see java.util.logging.Level | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpLogName* | Set log category to use to log http calls. | "Braintree" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to 'false' where an existing JUL - SLF4J logger bridge is on the classpath. This option can also be configured globally on the BraintreeComponent. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token granted by a merchant to another in order to process transactions on their behalf. Used in place of environment, merchant id, public key and private key fields. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | The private key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | The public key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to false where an existing JUL - SLF4J logger bridge is on the classpath. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-braintree-kafka-connector/src/main/docs/camel-braintree-kafka-source-connector.adoc b/connectors/camel-braintree-kafka-connector/src/main/docs/camel-braintree-kafka-source-connector.adoc
new file mode 100644
index 0000000..cad945d
--- /dev/null
+++ b/connectors/camel-braintree-kafka-connector/src/main/docs/camel-braintree-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-braintree-kafka-connector-source]]
+= camel-braintree-kafka-connector source configuration
+
+When using camel-braintree-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-braintree-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-braintree source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [ADDON] [ADDRESS] [CLIENTTOKEN] [CREDITCARDVERIFICATION] [CUSTOMER] [DISCOUNT] [DISPUTE] [DOCUMENTUPLOAD] [MERCHANTACCOUNT] [PAYMENTMETHOD] [PAYMENTMETHODNONCE] [PLAN] [REPORT] [SETTLEMENTBATCHSUMMARY] [SUBSCRIPTION] [TRANSACTION] [WEBHOOKNOTIFICATION] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.environment* | The environment Either SANDBOX or PRODUCTION | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.merchantId* | The merchant id provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpReadTimeout* | Set read timeout for http calls. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpLogLevel* | Set logging level for http calls, see java.util.logging.Level | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpLogName* | Set log category to use to log http calls. | "Braintree" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to 'false' where an existing JUL - SLF4J logger bridge is on the classpath. This option can also be configured globally on the BraintreeComponent. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token granted by a merchant to another in order to process transactions on their behalf. Used in place of environment, merchant id, public key and private key fields. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | The private key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | The public key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to false where an existing JUL - SLF4J logger bridge is on the classpath. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-browse-kafka-connector/pom.xml b/connectors/camel-browse-kafka-connector/pom.xml
index a89841a..c223031 100644
--- a/connectors/camel-browse-kafka-connector/pom.xml
+++ b/connectors/camel-browse-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-browse-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: browse</name>
diff --git a/connectors/camel-browse-kafka-connector/src/main/assembly/package.xml b/connectors/camel-browse-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-browse-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-browse-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-browse-kafka-connector/src/main/docs/camel-browse-kafka-sink-connector.adoc b/connectors/camel-browse-kafka-connector/src/main/docs/camel-browse-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6f14e2a
--- /dev/null
+++ b/connectors/camel-browse-kafka-connector/src/main/docs/camel-browse-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-browse-kafka-connector-sink]]
+= camel-browse-kafka-connector sink configuration
+
+When using camel-browse-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-browse-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-browse sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | A name which can be any string to uniquely identify the endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-browse-kafka-connector/src/main/docs/camel-browse-kafka-source-connector.adoc b/connectors/camel-browse-kafka-connector/src/main/docs/camel-browse-kafka-source-connector.adoc
new file mode 100644
index 0000000..b6d19dc
--- /dev/null
+++ b/connectors/camel-browse-kafka-connector/src/main/docs/camel-browse-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-browse-kafka-connector-source]]
+= camel-browse-kafka-connector source configuration
+
+When using camel-browse-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-browse-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-browse source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | A name which can be any string to uniquely identify the endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-caffeine-cache-kafka-connector/pom.xml b/connectors/camel-caffeine-cache-kafka-connector/pom.xml
index 4aabda2..b532ba8 100644
--- a/connectors/camel-caffeine-cache-kafka-connector/pom.xml
+++ b/connectors/camel-caffeine-cache-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-caffeine-cache-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: caffeine-cache</name>
diff --git a/connectors/camel-caffeine-cache-kafka-connector/src/main/assembly/package.xml b/connectors/camel-caffeine-cache-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-caffeine-cache-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-caffeine-cache-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-caffeine-cache-kafka-connector/src/main/docs/camel-caffeine-cache-kafka-sink-connector.adoc b/connectors/camel-caffeine-cache-kafka-connector/src/main/docs/camel-caffeine-cache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f58c287
--- /dev/null
+++ b/connectors/camel-caffeine-cache-kafka-connector/src/main/docs/camel-caffeine-cache-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-caffeine-cache-kafka-connector-sink]]
+= camel-caffeine-cache-kafka-connector sink configuration
+
+When using camel-caffeine-cache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-caffeine-cache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-caffeine-cache sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | To configure the default cache action. If an action is set in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cache* | To configure an already instantiated cache to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheLoader* | To configure a CacheLoader in case of a LoadCache use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.evictionType* | Set the eviction Type for this cache One of: [size_based] [time_based] | "SIZE_BASED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterAccessTime* | Set the expire After Access Time in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterWriteTime* | Set the expire After Access Write in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialCapacity* | Set the initial Capacity for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumSize* | Set the maximum size for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.removalListener* | Set a specific removal Listener for the cache | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsCounter* | Set a specific Stats Counter for the cache stats | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsEnabled* | To enable stats on the cache | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-cache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-cache.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-cache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-caffeine-loadcache-kafka-connector/pom.xml b/connectors/camel-caffeine-loadcache-kafka-connector/pom.xml
index bbf68b8..b79d363 100644
--- a/connectors/camel-caffeine-loadcache-kafka-connector/pom.xml
+++ b/connectors/camel-caffeine-loadcache-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-caffeine-loadcache-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: caffeine-loadcache</name>
diff --git a/connectors/camel-caffeine-loadcache-kafka-connector/src/main/assembly/package.xml b/connectors/camel-caffeine-loadcache-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-caffeine-loadcache-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-caffeine-loadcache-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-caffeine-loadcache-kafka-connector/src/main/docs/camel-caffeine-loadcache-kafka-sink-connector.adoc b/connectors/camel-caffeine-loadcache-kafka-connector/src/main/docs/camel-caffeine-loadcache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e364c85
--- /dev/null
+++ b/connectors/camel-caffeine-loadcache-kafka-connector/src/main/docs/camel-caffeine-loadcache-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-caffeine-loadcache-kafka-connector-sink]]
+= camel-caffeine-loadcache-kafka-connector sink configuration
+
+When using camel-caffeine-loadcache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-caffeine-loadcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-caffeine-loadcache sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | To configure the default cache action. If an action is set in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cache* | To configure an already instantiated cache to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheLoader* | To configure a CacheLoader in case of a LoadCache use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.evictionType* | Set the eviction Type for this cache One of: [size_based] [time_based] | "SIZE_BASED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterAccessTime* | Set the expire After Access Time in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterWriteTime* | Set the expire After Access Write in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialCapacity* | Set the initial Capacity for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumSize* | Set the maximum size for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.removalListener* | Set a specific removal Listener for the cache | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsCounter* | Set a specific Stats Counter for the cache stats | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsEnabled* | To enable stats on the cache | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-loadcache.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-loadcache.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-loadcache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-chatscript-kafka-connector/pom.xml b/connectors/camel-chatscript-kafka-connector/pom.xml
index 8a8b2ed..fd599cc 100644
--- a/connectors/camel-chatscript-kafka-connector/pom.xml
+++ b/connectors/camel-chatscript-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-chatscript-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: chatscript</name>
diff --git a/connectors/camel-chatscript-kafka-connector/src/main/assembly/package.xml b/connectors/camel-chatscript-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-chatscript-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-chatscript-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-chatscript-kafka-connector/src/main/docs/camel-chatscript-kafka-sink-connector.adoc b/connectors/camel-chatscript-kafka-connector/src/main/docs/camel-chatscript-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5531947
--- /dev/null
+++ b/connectors/camel-chatscript-kafka-connector/src/main/docs/camel-chatscript-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-chatscript-kafka-connector-sink]]
+= camel-chatscript-kafka-connector sink configuration
+
+When using camel-chatscript-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-chatscript-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-chatscript sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname or IP of the server on which CS server is running | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port on which ChatScript is listening to | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.botName* | Name of the Bot in CS to converse with | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.chatUserName* | Username who initializes the CS conversation. To be set when chat is initialized from camel route | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resetChat* | Issues :reset command to start a new conversation everytime | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chatscript.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chatscript.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-chunk-kafka-connector/pom.xml b/connectors/camel-chunk-kafka-connector/pom.xml
index 9553835..a1884df 100644
--- a/connectors/camel-chunk-kafka-connector/pom.xml
+++ b/connectors/camel-chunk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-chunk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: chunk</name>
diff --git a/connectors/camel-chunk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-chunk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-chunk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-chunk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-chunk-kafka-connector/src/main/docs/camel-chunk-kafka-sink-connector.adoc b/connectors/camel-chunk-kafka-connector/src/main/docs/camel-chunk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..88e10c4
--- /dev/null
+++ b/connectors/camel-chunk-kafka-connector/src/main/docs/camel-chunk-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-chunk-kafka-connector-sink]]
+= camel-chunk-kafka-connector sink configuration
+
+When using camel-chunk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-chunk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-chunk sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Define the encoding of the body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extension* | Define the file extension of the template | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.themeFolder* | Define the themes folder to scan | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.themeLayer* | Define the theme layer to elaborate | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.themeSubfolder* | Define the themes subfolder to scan | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chunk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chunk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-class-kafka-connector/pom.xml b/connectors/camel-class-kafka-connector/pom.xml
index 97b1ebf..d4bf035 100644
--- a/connectors/camel-class-kafka-connector/pom.xml
+++ b/connectors/camel-class-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-class-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: class</name>
diff --git a/connectors/camel-class-kafka-connector/src/main/assembly/package.xml b/connectors/camel-class-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-class-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-class-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-class-kafka-connector/src/main/docs/camel-class-kafka-sink-connector.adoc b/connectors/camel-class-kafka-connector/src/main/docs/camel-class-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b283070
--- /dev/null
+++ b/connectors/camel-class-kafka-connector/src/main/docs/camel-class-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-class-kafka-connector-sink]]
+= camel-class-kafka-connector sink configuration
+
+When using camel-class-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-class-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-class sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanName* | Sets the name of the bean to invoke | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cache* | Use scope option instead. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.method* | Sets the name of the method to invoke on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Used for configuring additional properties on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.class.cache* | Use singleton option instead. | "true" | ConfigDef.Importance.LOW
+| *camel.component.class.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.class.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using delegate scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.component.class.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cm-sms-kafka-connector/pom.xml b/connectors/camel-cm-sms-kafka-connector/pom.xml
index d22fa3b..ff5c98f 100644
--- a/connectors/camel-cm-sms-kafka-connector/pom.xml
+++ b/connectors/camel-cm-sms-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cm-sms-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cm-sms</name>
diff --git a/connectors/camel-cm-sms-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cm-sms-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cm-sms-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cm-sms-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cm-sms-kafka-connector/src/main/docs/camel-cm-sms-kafka-sink-connector.adoc b/connectors/camel-cm-sms-kafka-connector/src/main/docs/camel-cm-sms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3476a61
--- /dev/null
+++ b/connectors/camel-cm-sms-kafka-connector/src/main/docs/camel-cm-sms-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-cm-sms-kafka-connector-sink]]
+= camel-cm-sms-kafka-connector sink configuration
+
+When using camel-cm-sms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cm-sms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cm-sms sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | SMS Provider HOST with scheme | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultFrom* | This is the sender name. The maximum length is 11 characters. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultMaxNumberOfParts* | If it is a multipart message forces the max number. Message can be truncated. Technically the gateway will first check if a message is larger than 160 characters, if so, the message will be cut into multiple 153 characters parts limited by these parameters. | 8 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.productToken* | The unique token to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.testConnectionOnStartup* | Whether to test the connection to the SMS Gateway on startup | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cm-sms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cm-sms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cmis-kafka-connector/pom.xml b/connectors/camel-cmis-kafka-connector/pom.xml
index d980a72..3f2bec4 100644
--- a/connectors/camel-cmis-kafka-connector/pom.xml
+++ b/connectors/camel-cmis-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cmis-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cmis</name>
diff --git a/connectors/camel-cmis-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cmis-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cmis-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cmis-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cmis-kafka-connector/src/main/docs/camel-cmis-kafka-sink-connector.adoc b/connectors/camel-cmis-kafka-connector/src/main/docs/camel-cmis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f3dde1a
--- /dev/null
+++ b/connectors/camel-cmis-kafka-connector/src/main/docs/camel-cmis-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-cmis-kafka-connector-sink]]
+= camel-cmis-kafka-connector sink configuration
+
+When using camel-cmis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cmis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cmis sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cmsUrl* | URL to the cmis repository | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.pageSize* | Number of nodes to retrieve per page | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readContent* | If set to true, the content of document node will be retrieved in addition to the properties | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readCount* | Max number of nodes to read | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repositoryId* | The Id of the repository to use. If not specified the first available repository is used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryMode* | If true, will execute the cmis query from the message body and return result, otherwise will create a node in the cmis repository | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cmis-kafka-connector/src/main/docs/camel-cmis-kafka-source-connector.adoc b/connectors/camel-cmis-kafka-connector/src/main/docs/camel-cmis-kafka-source-connector.adoc
new file mode 100644
index 0000000..253c4ce
--- /dev/null
+++ b/connectors/camel-cmis-kafka-connector/src/main/docs/camel-cmis-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-cmis-kafka-connector-source]]
+= camel-cmis-kafka-connector source configuration
+
+When using camel-cmis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cmis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cmis source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cmsUrl* | URL to the cmis repository | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.pageSize* | Number of nodes to retrieve per page | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readContent* | If set to true, the content of document node will be retrieved in addition to the properties | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readCount* | Max number of nodes to read | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repositoryId* | The Id of the repository to use. If not specified the first available repository is used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The cmis query to execute against the repository. If not specified, the consumer will retrieve every node from the content repository by iterating the content tree recursively | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coap-kafka-connector/pom.xml b/connectors/camel-coap-kafka-connector/pom.xml
index fe9318f..2a6ad3c 100644
--- a/connectors/camel-coap-kafka-connector/pom.xml
+++ b/connectors/camel-coap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-coap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: coap</name>
diff --git a/connectors/camel-coap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-coap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-coap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-coap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-coap-kafka-connector/src/main/docs/camel-coap-kafka-sink-connector.adoc b/connectors/camel-coap-kafka-connector/src/main/docs/camel-coap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f538ff4
--- /dev/null
+++ b/connectors/camel-coap-kafka-connector/src/main/docs/camel-coap-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coap-kafka-connector-sink]]
+= camel-coap-kafka-connector sink configuration
+
+When using camel-coap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coap-kafka-connector/src/main/docs/camel-coap-kafka-source-connector.adoc b/connectors/camel-coap-kafka-connector/src/main/docs/camel-coap-kafka-source-connector.adoc
new file mode 100644
index 0000000..c2bb62e
--- /dev/null
+++ b/connectors/camel-coap-kafka-connector/src/main/docs/camel-coap-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coap-kafka-connector-source]]
+= camel-coap-kafka-connector source configuration
+
+When using camel-coap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coap-tcp-kafka-connector/pom.xml b/connectors/camel-coap-tcp-kafka-connector/pom.xml
index 92f036e..44ed25c 100644
--- a/connectors/camel-coap-tcp-kafka-connector/pom.xml
+++ b/connectors/camel-coap-tcp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-coap-tcp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: coap+tcp</name>
diff --git a/connectors/camel-coap-tcp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-coap-tcp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-coap-tcp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-coap-tcp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-coap-tcp-kafka-connector/src/main/docs/camel-coap+tcp-kafka-sink-connector.adoc b/connectors/camel-coap-tcp-kafka-connector/src/main/docs/camel-coap+tcp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..72bde9b
--- /dev/null
+++ b/connectors/camel-coap-tcp-kafka-connector/src/main/docs/camel-coap+tcp-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coap-tcp-kafka-connector-sink]]
+= camel-coap-tcp-kafka-connector sink configuration
+
+When using camel-coap-tcp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap-tcp sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coap-tcp-kafka-connector/src/main/docs/camel-coap+tcp-kafka-source-connector.adoc b/connectors/camel-coap-tcp-kafka-connector/src/main/docs/camel-coap+tcp-kafka-source-connector.adoc
new file mode 100644
index 0000000..e01315a
--- /dev/null
+++ b/connectors/camel-coap-tcp-kafka-connector/src/main/docs/camel-coap+tcp-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coap-tcp-kafka-connector-source]]
+= camel-coap-tcp-kafka-connector source configuration
+
+When using camel-coap-tcp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap-tcp source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coaps-kafka-connector/pom.xml b/connectors/camel-coaps-kafka-connector/pom.xml
index 98854d3..ac02aff 100644
--- a/connectors/camel-coaps-kafka-connector/pom.xml
+++ b/connectors/camel-coaps-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-coaps-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: coaps</name>
diff --git a/connectors/camel-coaps-kafka-connector/src/main/assembly/package.xml b/connectors/camel-coaps-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-coaps-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-coaps-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-coaps-kafka-connector/src/main/docs/camel-coaps-kafka-sink-connector.adoc b/connectors/camel-coaps-kafka-connector/src/main/docs/camel-coaps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..076b2d4
--- /dev/null
+++ b/connectors/camel-coaps-kafka-connector/src/main/docs/camel-coaps-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coaps-kafka-connector-sink]]
+= camel-coaps-kafka-connector sink configuration
+
+When using camel-coaps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coaps-kafka-connector/src/main/docs/camel-coaps-kafka-source-connector.adoc b/connectors/camel-coaps-kafka-connector/src/main/docs/camel-coaps-kafka-source-connector.adoc
new file mode 100644
index 0000000..1b7861f
--- /dev/null
+++ b/connectors/camel-coaps-kafka-connector/src/main/docs/camel-coaps-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coaps-kafka-connector-source]]
+= camel-coaps-kafka-connector source configuration
+
+When using camel-coaps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coaps-tcp-kafka-connector/pom.xml b/connectors/camel-coaps-tcp-kafka-connector/pom.xml
index 88f9835..d7f2c89 100644
--- a/connectors/camel-coaps-tcp-kafka-connector/pom.xml
+++ b/connectors/camel-coaps-tcp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-coaps-tcp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: coaps+tcp</name>
diff --git a/connectors/camel-coaps-tcp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-coaps-tcp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-coaps-tcp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-coaps-tcp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-coaps-tcp-kafka-connector/src/main/docs/camel-coaps+tcp-kafka-sink-connector.adoc b/connectors/camel-coaps-tcp-kafka-connector/src/main/docs/camel-coaps+tcp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86f71a7
--- /dev/null
+++ b/connectors/camel-coaps-tcp-kafka-connector/src/main/docs/camel-coaps+tcp-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coaps-tcp-kafka-connector-sink]]
+= camel-coaps-tcp-kafka-connector sink configuration
+
+When using camel-coaps-tcp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps-tcp sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-coaps-tcp-kafka-connector/src/main/docs/camel-coaps+tcp-kafka-source-connector.adoc b/connectors/camel-coaps-tcp-kafka-connector/src/main/docs/camel-coaps+tcp-kafka-source-connector.adoc
new file mode 100644
index 0000000..c70f560
--- /dev/null
+++ b/connectors/camel-coaps-tcp-kafka-connector/src/main/docs/camel-coaps+tcp-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coaps-tcp-kafka-connector-source]]
+= camel-coaps-tcp-kafka-connector source configuration
+
+When using camel-coaps-tcp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps-tcp source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cometd-kafka-connector/pom.xml b/connectors/camel-cometd-kafka-connector/pom.xml
index e3b57fe..2299f6c 100644
--- a/connectors/camel-cometd-kafka-connector/pom.xml
+++ b/connectors/camel-cometd-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cometd-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cometd</name>
diff --git a/connectors/camel-cometd-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cometd-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cometd-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cometd-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cometd-kafka-connector/src/main/docs/camel-cometd-kafka-sink-connector.adoc b/connectors/camel-cometd-kafka-connector/src/main/docs/camel-cometd-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8c3ffe5
--- /dev/null
+++ b/connectors/camel-cometd-kafka-connector/src/main/docs/camel-cometd-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-cometd-kafka-connector-sink]]
+= camel-cometd-kafka-connector sink configuration
+
+When using camel-cometd-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometd-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometd sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectLocalSession* | Whether to disconnect local sessions after publishing a message to its channel. Disconnecting local session is needed as they are not swept by default by CometD, and therefore you can run out of memory. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cometd-kafka-connector/src/main/docs/camel-cometd-kafka-source-connector.adoc b/connectors/camel-cometd-kafka-connector/src/main/docs/camel-cometd-kafka-source-connector.adoc
new file mode 100644
index 0000000..31656fd
--- /dev/null
+++ b/connectors/camel-cometd-kafka-connector/src/main/docs/camel-cometd-kafka-source-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-cometd-kafka-connector-source]]
+= camel-cometd-kafka-connector source configuration
+
+When using camel-cometd-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometd-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometd source connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.source.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionHeadersEnabled* | Whether to include the server session headers in the Camel message when creating a Camel Message for incoming requests. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cometds-kafka-connector/pom.xml b/connectors/camel-cometds-kafka-connector/pom.xml
index 2a3c0e7..634b936 100644
--- a/connectors/camel-cometds-kafka-connector/pom.xml
+++ b/connectors/camel-cometds-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cometds-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cometds</name>
diff --git a/connectors/camel-cometds-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cometds-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cometds-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cometds-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cometds-kafka-connector/src/main/docs/camel-cometds-kafka-sink-connector.adoc b/connectors/camel-cometds-kafka-connector/src/main/docs/camel-cometds-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2d67630
--- /dev/null
+++ b/connectors/camel-cometds-kafka-connector/src/main/docs/camel-cometds-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-cometds-kafka-connector-sink]]
+= camel-cometds-kafka-connector sink configuration
+
+When using camel-cometds-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometds sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectLocalSession* | Whether to disconnect local sessions after publishing a message to its channel. Disconnecting local session is needed as they are not swept by default by CometD, and therefore you can run out of memory. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cometds-kafka-connector/src/main/docs/camel-cometds-kafka-source-connector.adoc b/connectors/camel-cometds-kafka-connector/src/main/docs/camel-cometds-kafka-source-connector.adoc
new file mode 100644
index 0000000..2a8b938
--- /dev/null
+++ b/connectors/camel-cometds-kafka-connector/src/main/docs/camel-cometds-kafka-source-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-cometds-kafka-connector-source]]
+= camel-cometds-kafka-connector source configuration
+
+When using camel-cometds-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometds source connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.source.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionHeadersEnabled* | Whether to include the server session headers in the Camel message when creating a Camel Message for incoming requests. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-consul-kafka-connector/pom.xml b/connectors/camel-consul-kafka-connector/pom.xml
index 95f3472..3b4fcb1 100644
--- a/connectors/camel-consul-kafka-connector/pom.xml
+++ b/connectors/camel-consul-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-consul-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: consul</name>
diff --git a/connectors/camel-consul-kafka-connector/src/main/assembly/package.xml b/connectors/camel-consul-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-consul-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-consul-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-consul-kafka-connector/src/main/docs/camel-consul-kafka-sink-connector.adoc b/connectors/camel-consul-kafka-connector/src/main/docs/camel-consul-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0ba711c
--- /dev/null
+++ b/connectors/camel-consul-kafka-connector/src/main/docs/camel-consul-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-consul-kafka-connector-sink]]
+= camel-consul-kafka-connector sink configuration
+
+When using camel-consul-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-consul-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-consul sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiEndpoint* | The API endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectTimeoutMillis* | Connect timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consulClient* | Reference to a com.orbitz.consul.Consul in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The default key. Can be overridden by CamelConsulKey | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pingInstance* | Configure if the AgentClient should attempt a ping before returning the Consul instance | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readTimeoutMillis* | Read timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tags* | Set tags. You can separate multiple tags by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeTimeoutMillis* | Write timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | The default action. Can be overridden by CamelConsulAction | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueAsString* | Default to transform values retrieved from Consul i.e. on KV endpoint to string. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistencyMode* | The consistencyMode used for queries, default ConsistencyMode.DEFAULT One of: [DEFAULT] [STALE] [CONSISTENT] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nearNode* | The near node to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeMeta* | The note meta-data to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-consul-kafka-connector/src/main/docs/camel-consul-kafka-source-connector.adoc b/connectors/camel-consul-kafka-connector/src/main/docs/camel-consul-kafka-source-connector.adoc
new file mode 100644
index 0000000..9e35d6a
--- /dev/null
+++ b/connectors/camel-consul-kafka-connector/src/main/docs/camel-consul-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-consul-kafka-connector-source]]
+= camel-consul-kafka-connector source configuration
+
+When using camel-consul-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-consul-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-consul source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiEndpoint* | The API endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectTimeoutMillis* | Connect timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consulClient* | Reference to a com.orbitz.consul.Consul in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.key* | The default key. Can be overridden by CamelConsulKey | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pingInstance* | Configure if the AgentClient should attempt a ping before returning the Consul instance | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeoutMillis* | Read timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tags* | Set tags. You can separate multiple tags by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeTimeoutMillis* | Write timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consistencyMode* | The consistencyMode used for queries, default ConsistencyMode.DEFAULT One of: [DEFAULT] [STALE] [CONSISTENT] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nearNode* | The near node to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodeMeta* | The note meta-data to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blockSeconds* | The second to wait for a watch event, default 10 seconds | "10" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.firstIndex* | The first index for watch for, default 0 | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | Recursively watch, default false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-controlbus-kafka-connector/pom.xml b/connectors/camel-controlbus-kafka-connector/pom.xml
index 0d2b488..4f54c91 100644
--- a/connectors/camel-controlbus-kafka-connector/pom.xml
+++ b/connectors/camel-controlbus-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-controlbus-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: controlbus</name>
diff --git a/connectors/camel-controlbus-kafka-connector/src/main/assembly/package.xml b/connectors/camel-controlbus-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-controlbus-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-controlbus-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-controlbus-kafka-connector/src/main/docs/camel-controlbus-kafka-sink-connector.adoc b/connectors/camel-controlbus-kafka-connector/src/main/docs/camel-controlbus-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2162696
--- /dev/null
+++ b/connectors/camel-controlbus-kafka-connector/src/main/docs/camel-controlbus-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-controlbus-kafka-connector-sink]]
+= camel-controlbus-kafka-connector sink configuration
+
+When using camel-controlbus-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-controlbus-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-controlbus sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.command* | Command can be either route or language One of: [route] [language] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.language* | Allows you to specify the name of a Language to use for evaluating the message body. If there is any result from the evaluation, then the result is put in the message body. One of: [bean] [constant] [el] [exchangeProperty] [file] [groovy] [header] [jsonpath] [mvel] [ognl] [ref] [simple] [spel] [sql] [terser] [tokenize] [xpath] [xquery] [xtokenize] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | To denote an action that can be either: start, stop, or status. To either start or stop a route, or to get the status of the route as output in the message body. You can use suspend and resume from Camel 2.11.1 onwards to either suspend or resume a route. And from Camel 2.11.1 onwards you can use stats to get performance statics returned in XML format; the routeId option can be used to define which route to get the performance stats for, if routeId is not defined, then you get statistics for the entire CamelContext. The restart action will restart the route. One of: [start] [stop] [suspend] [resume] [restart] [status] [stats] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.async* | Whether to execute the control bus task asynchronously. Important: If this option is enabled, then any result from the task is not set on the Exchange. This is only possible if executing tasks synchronously. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingLevel* | Logging level used for logging when task is done, or if any exceptions occurred during processing the task. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "INFO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.restartDelay* | The delay in millis to use when restarting a route. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.routeId* | To specify a route by its id. The special keyword current indicates the current route. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.controlbus.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.controlbus.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-corda-kafka-connector/pom.xml b/connectors/camel-corda-kafka-connector/pom.xml
index 12a53f4..af0b7b3 100644
--- a/connectors/camel-corda-kafka-connector/pom.xml
+++ b/connectors/camel-corda-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-corda-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: corda</name>
diff --git a/connectors/camel-corda-kafka-connector/src/main/assembly/package.xml b/connectors/camel-corda-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-corda-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-corda-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-corda-kafka-connector/src/main/docs/camel-corda-kafka-sink-connector.adoc b/connectors/camel-corda-kafka-connector/src/main/docs/camel-corda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..aae4306
--- /dev/null
+++ b/connectors/camel-corda-kafka-connector/src/main/docs/camel-corda-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-corda-kafka-connector-sink]]
+= camel-corda-kafka-connector sink configuration
+
+When using camel-corda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-corda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-corda sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.node* | The url for the corda node | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.configuration* | To use a shared configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-corda-kafka-connector/src/main/docs/camel-corda-kafka-source-connector.adoc b/connectors/camel-corda-kafka-connector/src/main/docs/camel-corda-kafka-source-connector.adoc
new file mode 100644
index 0000000..f46c0c5
--- /dev/null
+++ b/connectors/camel-corda-kafka-connector/src/main/docs/camel-corda-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-corda-kafka-connector-source]]
+= camel-corda-kafka-connector source configuration
+
+When using camel-corda-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-corda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-corda source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.node* | The url for the corda node | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageSpecification* | PageSpecification allows specification of a page number (starting from 1) and page size (defaulting to 200 with a maximum page size of (Integer.MAX_INT) Note: we default the page number to 200 to enable queries without requiring a page specification but enabling detection of large results sets that fall out of the 200 requirement. Max page size should be used with extreme caution as results may exceed your JVM memory footprint. | "200" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processSnapshot* | Whether to process snapshots or not | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sort* | Sort allows specification of a set of entity attribute names and their associated directionality and null handling, to be applied upon processing a query specification. One of: [ASC] [DESC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contractStateClass* | A contract state (or just state) contains opaque data used by a contract program. It can be thought of as a disk file that the program can use to persist data across transactions. States are immutable: once created they are never updated, instead, any changes must generate a new successor state. States can be updated (consumed) only once: the notary is responsible for ensuring there is no double spending by only signing a transaction if the input states are all free. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flowLogicArguments* | Start the given flow with the given arguments, returning an Observable with a single observation of the result of running the flow. The flowLogicClass must be annotated with net.corda.core.flows.StartableByRPC. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flowLogicClass* | Start the given flow with the given arguments, returning an Observable with a single observation of the result of running the flow. The flowLogicClass must be annotated with net.corda.core.flows.StartableByRPC. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queryCriteria* | QueryCriteria assumes underlying schema tables are correctly indexed for performance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.configuration* | To use a shared configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-couchbase-kafka-connector/pom.xml b/connectors/camel-couchbase-kafka-connector/pom.xml
index 05be8a8..add4560 100644
--- a/connectors/camel-couchbase-kafka-connector/pom.xml
+++ b/connectors/camel-couchbase-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-couchbase-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: couchbase</name>
diff --git a/connectors/camel-couchbase-kafka-connector/src/main/assembly/package.xml b/connectors/camel-couchbase-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-couchbase-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-couchbase-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-couchbase-kafka-connector/src/main/docs/camel-couchbase-kafka-sink-connector.adoc b/connectors/camel-couchbase-kafka-connector/src/main/docs/camel-couchbase-kafka-sink-connector.adoc
new file mode 100644
index 0000000..347ff4c
--- /dev/null
+++ b/connectors/camel-couchbase-kafka-connector/src/main/docs/camel-couchbase-kafka-sink-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-couchbase-kafka-connector-sink]]
+= camel-couchbase-kafka-connector sink configuration
+
+When using camel-couchbase-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchbase sink connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.hostname* | The hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number to use | 8091 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bucket* | The bucket to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The key to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoStartIdForInserts* | Define if we want an autostart Id when we are doing an insert operation | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | "CCB_PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistTo* | Where to persist the data | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerRetryAttempts* | Define the number of retry attempts | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerRetryPause* | Define the retry pause between different attempts | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replicateTo* | Where to replicate the data | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.startingIdForInsertsFrom* | Define the starting Id where we are doing an insert operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalHosts* | The additional hosts | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnectDelay* | Define the max delay during a reconnection | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.obsPollInterval* | Define the observation polling interval | 400L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.obsTimeout* | Define the observation timeout | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.opQueueMaxBlockTime* | Define the max time an operation can be in queue blocked | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.opTimeOut* | Define the operation timeout | 2500L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readBufferSize* | Define the buffer size | 16384 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.shouldOptimize* | Define if we want to use optimization or not where possible | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeoutExceptionThreshold* | Define the threshold for throwing a timeout Exception | 998 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-couchbase-kafka-connector/src/main/docs/camel-couchbase-kafka-source-connector.adoc b/connectors/camel-couchbase-kafka-connector/src/main/docs/camel-couchbase-kafka-source-connector.adoc
new file mode 100644
index 0000000..3cbbeb9
--- /dev/null
+++ b/connectors/camel-couchbase-kafka-connector/src/main/docs/camel-couchbase-kafka-source-connector.adoc
@@ -0,0 +1,73 @@
+// kafka-connector options: START
+[[camel-couchbase-kafka-connector-source]]
+= camel-couchbase-kafka-connector source configuration
+
+When using camel-couchbase-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchbase source connector supports 47 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.hostname* | The hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number to use | 8091 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bucket* | The bucket to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.key* | The key to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerProcessedStrategy* | Define the consumer Processed strategy to use | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.descending* | Define if this operation is descending or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.designDocumentName* | The design document name to use | "beer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | The output limit to use | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rangeEndKey* | Define a range for the end key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rangeStartKey* | Define a range for the start key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skip* | Define the skip to use | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.viewName* | The view name to use | "brewery_beers" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalHosts* | The additional hosts | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnectDelay* | Define the max delay during a reconnection | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.obsPollInterval* | Define the observation polling interval | 400L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.obsTimeout* | Define the observation timeout | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.opQueueMaxBlockTime* | Define the max time an operation can be in queue blocked | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.opTimeOut* | Define the operation timeout | 2500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readBufferSize* | Define the buffer size | 16384 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shouldOptimize* | Define if we want to use optimization or not where possible | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeoutExceptionThreshold* | Define the threshold for throwing a timeout Exception | 998 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-couchdb-kafka-connector/pom.xml b/connectors/camel-couchdb-kafka-connector/pom.xml
index 7ae7b21..4bef57c 100644
--- a/connectors/camel-couchdb-kafka-connector/pom.xml
+++ b/connectors/camel-couchdb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-couchdb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: couchdb</name>
diff --git a/connectors/camel-couchdb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-couchdb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-couchdb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-couchdb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-couchdb-kafka-connector/src/main/docs/camel-couchdb-kafka-sink-connector.adoc b/connectors/camel-couchdb-kafka-connector/src/main/docs/camel-couchdb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a0af766
--- /dev/null
+++ b/connectors/camel-couchdb-kafka-connector/src/main/docs/camel-couchdb-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-couchdb-kafka-connector-sink]]
+= camel-couchdb-kafka-connector sink configuration
+
+When using camel-couchdb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchdb sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use for communicating with the database. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.hostname* | Hostname of the running couchdb instance | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the running couchdb instance | 5984 | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.database* | Name of the database to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.createDatabase* | Creates the database if it does not already exist | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username in case of authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-couchdb-kafka-connector/src/main/docs/camel-couchdb-kafka-source-connector.adoc b/connectors/camel-couchdb-kafka-connector/src/main/docs/camel-couchdb-kafka-source-connector.adoc
new file mode 100644
index 0000000..3c42e65
--- /dev/null
+++ b/connectors/camel-couchdb-kafka-connector/src/main/docs/camel-couchdb-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-couchdb-kafka-connector-source]]
+= camel-couchdb-kafka-connector source configuration
+
+When using camel-couchdb-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchdb source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use for communicating with the database. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.hostname* | Hostname of the running couchdb instance | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the running couchdb instance | 5984 | ConfigDef.Importance.MEDIUM
+| *camel.source.path.database* | Name of the database to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.createDatabase* | Creates the database if it does not already exist | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deletes* | Document deletes are published as events | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeat* | How often to send an empty message to keep socket alive in millis | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.since* | Start tracking changes immediately after the given update sequence. The default, null, will start monitoring from the latest sequence. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.style* | Specifies how many revisions are returned in the changes array. The default, main_only, will only return the current winning revision; all_docs will return all leaf revisions (including conflicts and deleted former conflicts.) One of: [all_docs] [main_only] | "main_only" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.updates* | Document inserts/updates are published as events | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username in case of authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cql-kafka-connector/pom.xml b/connectors/camel-cql-kafka-connector/pom.xml
index b19b19d..b6c119cf 100644
--- a/connectors/camel-cql-kafka-connector/pom.xml
+++ b/connectors/camel-cql-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cql-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cql</name>
diff --git a/connectors/camel-cql-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cql-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cql-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cql-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cql-kafka-connector/src/main/docs/camel-cql-kafka-sink-connector.adoc b/connectors/camel-cql-kafka-connector/src/main/docs/camel-cql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9471e90
--- /dev/null
+++ b/connectors/camel-cql-kafka-connector/src/main/docs/camel-cql-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-cql-kafka-connector-sink]]
+= camel-cql-kafka-connector sink configuration
+
+When using camel-cql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cql sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanRef* | beanRef is defined using bean:id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.hosts* | Hostname(s) cassansdra server(s). Multiple hosts can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port number of cassansdra server(s) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.keyspace* | Keyspace to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cluster* | To use the Cluster instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clusterName* | Cluster name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistencyLevel* | Consistency level to use One of: [ANY] [ONE] [TWO] [THREE] [QUORUM] [ALL] [LOCAL_QUORUM] [EACH_QUORUM] [SERIAL] [LOCAL_SERIAL] [LOCAL_ONE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cql* | CQL query to perform. Can be overridden with the message header with key CamelCqlQuery. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loadBalancingPolicy* | To use a specific LoadBalancingPolicy | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatements* | Whether to use PreparedStatements or regular Statements | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultSetConversionStrategy* | To use a custom class that implements logic for converting ResultSet into message body ALL, ONE, LIMIT_10, LIMIT_100... | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | To use the Session instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cql-kafka-connector/src/main/docs/camel-cql-kafka-source-connector.adoc b/connectors/camel-cql-kafka-connector/src/main/docs/camel-cql-kafka-source-connector.adoc
new file mode 100644
index 0000000..5c7ea2b
--- /dev/null
+++ b/connectors/camel-cql-kafka-connector/src/main/docs/camel-cql-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-cql-kafka-connector-source]]
+= camel-cql-kafka-connector source configuration
+
+When using camel-cql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cql source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.beanRef* | beanRef is defined using bean:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.hosts* | Hostname(s) cassansdra server(s). Multiple hosts can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Port number of cassansdra server(s) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.keyspace* | Keyspace to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cluster* | To use the Cluster instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusterName* | Cluster name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consistencyLevel* | Consistency level to use One of: [ANY] [ONE] [TWO] [THREE] [QUORUM] [ALL] [LOCAL_QUORUM] [EACH_QUORUM] [SERIAL] [LOCAL_SERIAL] [LOCAL_ONE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cql* | CQL query to perform. Can be overridden with the message header with key CamelCqlQuery. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loadBalancingPolicy* | To use a specific LoadBalancingPolicy | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prepareStatements* | Whether to use PreparedStatements or regular Statements | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultSetConversionStrategy* | To use a custom class that implements logic for converting ResultSet into message body ALL, ONE, LIMIT_10, LIMIT_100... | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | To use the Session instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cron-kafka-connector/pom.xml b/connectors/camel-cron-kafka-connector/pom.xml
index 0b56fdf..6cd02cb 100644
--- a/connectors/camel-cron-kafka-connector/pom.xml
+++ b/connectors/camel-cron-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cron-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cron</name>
diff --git a/connectors/camel-cron-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cron-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cron-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cron-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cron-kafka-connector/src/main/docs/camel-cron-kafka-source-connector.adoc b/connectors/camel-cron-kafka-connector/src/main/docs/camel-cron-kafka-source-connector.adoc
new file mode 100644
index 0000000..2971df3
--- /dev/null
+++ b/connectors/camel-cron-kafka-connector/src/main/docs/camel-cron-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-cron-kafka-connector-source]]
+= camel-cron-kafka-connector source configuration
+
+When using camel-cron-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cron source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | The name of the cron trigger | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedule* | A cron expression that will be used to generate events | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cron.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cron.cronService* | The id of the CamelCronService to use when multiple implementations are provided | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-crypto-cms-kafka-connector/pom.xml b/connectors/camel-crypto-cms-kafka-connector/pom.xml
index 209a891..dda5ac4 100644
--- a/connectors/camel-crypto-cms-kafka-connector/pom.xml
+++ b/connectors/camel-crypto-cms-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-crypto-cms-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: crypto-cms</name>
diff --git a/connectors/camel-crypto-cms-kafka-connector/src/main/assembly/package.xml b/connectors/camel-crypto-cms-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-crypto-cms-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-crypto-cms-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-crypto-cms-kafka-connector/src/main/docs/camel-crypto-cms-kafka-sink-connector.adoc b/connectors/camel-crypto-cms-kafka-connector/src/main/docs/camel-crypto-cms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..676a02c
--- /dev/null
+++ b/connectors/camel-crypto-cms-kafka-connector/src/main/docs/camel-crypto-cms-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-crypto-cms-kafka-connector-sink]]
+= camel-crypto-cms-kafka-connector sink configuration
+
+When using camel-crypto-cms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-crypto-cms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-crypto-cms sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cryptoOperation* | Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto-cms:sign sets sign as the operation. Possible values: sign, verify, encrypt, or decrypt. One of: [sign] [verify] [encrypt] [decrypt] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.name* | The name part in the URI can be chosen by the user to distinguish between different signer/verifier/encryptor/decryptor endpoints within the camel context. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.keyStore* | Keystore which contains signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keyStoreParameters'. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreParameters* | Keystore containing signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keystore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password of the private keys. It is assumed that all private keys in the keystore have the same password. If not set then it is assumed that the password of the private keys is given by the keystore password given in the KeyStoreParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromBase64* | If true then the CMS message is base 64 encoded and must be decoded during the processing. Default value is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentEncryptionAlgorithm* | Encryption algorithm, for example DESede/CBC/PKCS5Padding. Further possible values: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. One of: [AES/CBC/PKCS5Padding] [DESede/CBC/PKCS5Padding] [Camellia/CBC/PKCS5Padding] [CAST5/CBC/PKCS5Padding] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.originatorInformationProvider* | Provider for the originator info. See \https://tools.ietf.org/html/rfc5652#section-6.1. The default value is null. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recipient* | Recipient Info: reference to a bean which implements the interface org.apache.camel.component.crypto.cms.api.TransRecipientInfo | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKeyLength* | Key length for the secret symmetric key used for the content encryption. Only used if the specified content-encryption algorithm allows keys of different sizes. If contentEncryptionAlgorithm=AES/CBC/PKCS5Padding or Camellia/CBC/PKCS5Padding then 128; if contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; if strong encryption is enabled then for AES/CBC/PKCS5Padding and Camellia/CBC/PKCS5Padding also the key lengths 192 and 256 are possible. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.unprotectedAttributesGenerator Provider* | Provider of the generator for the unprotected attributes. The default value is null which means no unprotected attribute is added to the Enveloped Data object. See \https://tools.ietf.org/html/rfc5652#section-6.1. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toBase64* | Indicates whether the Signed Data or Enveloped Data instance shall be base 64 encoded. Default value is false. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeContent* | Indicates whether the signed content should be included into the Signed Data instance. If false then a detached Signed Data instance is created in the header CamelCryptoCmsSignedData. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signer* | Signer information: reference to bean(s) which implements org.apache.camel.component.crypto.cms.api.SignerInfo. Multiple values can be separated by comma | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signedDataHeaderBase64* | Indicates whether the value in the header CamelCryptoCmsSignedData is base64 encoded. Default value is false. Only relevant for detached signatures. In the detached signature case, the header contains the Signed Data object. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.verifySignaturesOfAllSigners* | If true then the signatures of all signers contained in the Signed Data object are verified. If false then only one signature whose signer info matches with one of the specified certificates is verified. Default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.envelopedDataDecryptor Configuration* | To configure the shared EnvelopedDataDecryptorConfiguration, which determines the uri parameters for the decrypt operation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.signedDataVerifier Configuration* | To configure the shared SignedDataVerifierConfiguration, which determines the uri parameters for the verify operation. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-crypto-kafka-connector/pom.xml b/connectors/camel-crypto-kafka-connector/pom.xml
index 38b66c0..04df206 100644
--- a/connectors/camel-crypto-kafka-connector/pom.xml
+++ b/connectors/camel-crypto-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-crypto-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: crypto</name>
diff --git a/connectors/camel-crypto-kafka-connector/src/main/assembly/package.xml b/connectors/camel-crypto-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-crypto-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-crypto-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-crypto-kafka-connector/src/main/docs/camel-crypto-kafka-sink-connector.adoc b/connectors/camel-crypto-kafka-connector/src/main/docs/camel-crypto-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c485205
--- /dev/null
+++ b/connectors/camel-crypto-kafka-connector/src/main/docs/camel-crypto-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-crypto-kafka-connector-sink]]
+= camel-crypto-kafka-connector sink configuration
+
+When using camel-crypto-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-crypto-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-crypto sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cryptoOperation* | Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto:sign sets sign as the operation. One of: [sign] [verify] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.name* | The logical name of this operation. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.algorithm* | Sets the JCE name of the Algorithm that should be used for the signer. | "SHA256withRSA" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for keys and {link java.security.cert.Certificate Certificates} to be used in signing and verifying exchanges. This value can be provided at runtime via the message header org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certificateName* | Sets the reference name for a PrivateKey that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keystore* | Sets the KeyStore that can contain keys and Certficates for use in signing and verifying exchanges. A KeyStore is typically used with an alias, either one supplied in the Route definition or dynamically via the message header CamelSignatureKeyStoreAlias. If no alias is supplied and there is only a single entry in the Keystore, then this single entry will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keystoreName* | Sets the reference name for a Keystore that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the PrivateKey that should be used to sign the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyName* | Sets the reference name for a PrivateKey that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.provider* | Set the id of the security provider that provides the configured Signature algorithm. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKeyName* | references that should be resolved when the context changes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secureRandomName* | Sets the reference name for a SecureRandom that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signatureHeaderName* | Set the name of the message header that should be used to store the base64 encoded signature. This defaults to 'CamelDigitalSignature' | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Set the size of the buffer used to read in the Exchange payload data. | "2048" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certificate* | Set the Certificate that should be used to verify the signature in the exchange based on its payload. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearHeaders* | Determines if the Signature specific headers be cleared after signing and verification. Defaults to true, and should only be made otherwise at your extreme peril as vital private information such as Keys and passwords may escape if unset. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreParameters* | Sets the KeyStore that can contain keys and Certficates for use in signing and verifying exchanges based on the given KeyStoreParameters. A KeyStore is typically used with an alias, either one supplied in the Route definition or dynamically via the message header CamelSignatureKeyStoreAlias. If no alias is supplied and there is only a single entry in the Keystore, then this single entry will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the PublicKey that should be used to verify the signature in the exchange. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secureRandom* | Set the SecureRandom used to initialize the Signature service | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password used to access an aliased PrivateKey in the KeyStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto.configuration* | To use the shared DigitalSignatureConfiguration as configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cxf-kafka-connector/pom.xml b/connectors/camel-cxf-kafka-connector/pom.xml
index 1c87c82..87939f8 100644
--- a/connectors/camel-cxf-kafka-connector/pom.xml
+++ b/connectors/camel-cxf-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cxf-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cxf</name>
diff --git a/connectors/camel-cxf-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cxf-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cxf-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cxf-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cxf-kafka-connector/src/main/docs/camel-cxf-kafka-sink-connector.adoc b/connectors/camel-cxf-kafka-connector/src/main/docs/camel-cxf-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4317478
--- /dev/null
+++ b/connectors/camel-cxf-kafka-connector/src/main/docs/camel-cxf-kafka-sink-connector.adoc
@@ -0,0 +1,66 @@
+// kafka-connector options: START
+[[camel-cxf-kafka-connector-sink]]
+= camel-cxf-kafka-connector sink configuration
+
+When using camel-cxf-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxf sink connector supports 40 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanId* | To lookup an existing configured CxfEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataFormat* | The data type messages supported by the CXF endpoint. One of: [PAYLOAD] [RAW] [MESSAGE] [CXF_MESSAGE] [POJO] | "POJO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wrappedStyle* | The WSDL style that describes how parameters are represented in the SOAP body. If the value is false, CXF will chose the document-literal unwrapped style, If the value is true, CXF will chose the document-literal wrapped style | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultOperationName* | This option will set the default operationName that will be used by the CxfProducer which invokes the remote service. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultOperationNamespace* | This option will set the default operationNamespace that will be used by the CxfProducer which invokes the remote service. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostnameVerifier* | The hostname verifier to be used. Use the # notation to reference a HostnameVerifier from the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | The Camel SSL setting reference. Use the # notation to reference the SSL Context. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wrapped* | Which kind of operation that CXF endpoint producer will invoke | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cxfBinding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cxfConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure\{ServerClient\} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mergeProtocolHeaders* | Whether to merge protocol headers. If enabled then propagating headers between Camel and CXF becomes more consistent and similar. For more details see CAMEL-6393. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mtomEnabled* | To enable MTOM (attachments). This requires to use POJO or PAYLOAD data format mode. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.properties* | To set additional CXF options using the key/value pairs from the Map. For example to turn on stacktraces in SOAP faults, properties.faultStackTraceEnabled=true | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipPayloadMessagePartCheck* | Sets whether SOAP message validation should be disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound SOAP messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled and -1 for no limit. | 49152 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | This option is used to set the basic authentication information of password for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | This option is used to set the basic authentication information of username for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bindingId* | The bindingId for the service model to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The endpoint name this service is implementing, it maps to the wsdl:portname. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publishedEndpointUrl* | This option can override the endpointUrl that published from the WSDL which can be accessed with service address url plus wsd | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceClass* | The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceName* | The service name this service is implementing, it maps to the wsdl:servicename. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wsdlURL* | The location of the WSDL. Can be on the classpath, file system, or be hosted remotely. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cxf-kafka-connector/src/main/docs/camel-cxf-kafka-source-connector.adoc b/connectors/camel-cxf-kafka-connector/src/main/docs/camel-cxf-kafka-source-connector.adoc
new file mode 100644
index 0000000..be118f9
--- /dev/null
+++ b/connectors/camel-cxf-kafka-connector/src/main/docs/camel-cxf-kafka-source-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-cxf-kafka-connector-source]]
+= camel-cxf-kafka-connector source configuration
+
+When using camel-cxf-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxf source connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.beanId* | To lookup an existing configured CxfEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataFormat* | The data type messages supported by the CXF endpoint. One of: [PAYLOAD] [RAW] [MESSAGE] [CXF_MESSAGE] [POJO] | "POJO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.wrappedStyle* | The WSDL style that describes how parameters are represented in the SOAP body. If the value is false, CXF will chose the document-literal unwrapped style, If the value is true, CXF will chose the document-literal wrapped style | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cxfBinding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cxfConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure\{ServerClient\} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mergeProtocolHeaders* | Whether to merge protocol headers. If enabled then propagating headers between Camel and CXF becomes more consistent and similar. For more details see CAMEL-6393. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mtomEnabled* | To enable MTOM (attachments). This requires to use POJO or PAYLOAD data format mode. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.properties* | To set additional CXF options using the key/value pairs from the Map. For example to turn on stacktraces in SOAP faults, properties.faultStackTraceEnabled=true | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipPayloadMessagePartCheck* | Sets whether SOAP message validation should be disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound SOAP messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled and -1 for no limit. | 49152 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | This option is used to set the basic authentication information of password for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | This option is used to set the basic authentication information of username for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindingId* | The bindingId for the service model to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The endpoint name this service is implementing, it maps to the wsdl:portname. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publishedEndpointUrl* | This option can override the endpointUrl that published from the WSDL which can be accessed with service address url plus wsd | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceClass* | The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceName* | The service name this service is implementing, it maps to the wsdl:servicename. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.wsdlURL* | The location of the WSDL. Can be on the classpath, file system, or be hosted remotely. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cxfrs-kafka-connector/pom.xml b/connectors/camel-cxfrs-kafka-connector/pom.xml
index 7ee81c7..acbf902 100644
--- a/connectors/camel-cxfrs-kafka-connector/pom.xml
+++ b/connectors/camel-cxfrs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-cxfrs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: cxfrs</name>
diff --git a/connectors/camel-cxfrs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-cxfrs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-cxfrs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-cxfrs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-cxfrs-kafka-connector/src/main/docs/camel-cxfrs-kafka-sink-connector.adoc b/connectors/camel-cxfrs-kafka-connector/src/main/docs/camel-cxfrs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5410bb4
--- /dev/null
+++ b/connectors/camel-cxfrs-kafka-connector/src/main/docs/camel-cxfrs-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-cxfrs-kafka-connector-sink]]
+= camel-cxfrs-kafka-connector sink configuration
+
+When using camel-cxfrs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxfrs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxfrs sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanId* | To lookup an existing configured CxfRsEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.features* | Set the feature list to the CxfRs endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound REST messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.modelRef* | This option is used to specify the model file which is useful for the resource class without annotation. When using this option, then the service class can be omitted, to emulate document-only endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.providers* | Set custom JAX-RS provider(s) list to the CxfRs endpoint. You can specify a string with a list of providers to lookup in the registy separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceClasses* | The resource classes which you want to export as REST service. Multiple classes can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLocations* | Sets the locations of the schema(s) which can be used to validate the incoming XML or JAXB-driven JSON. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostnameVerifier* | The hostname verifier to be used. Use the # notation to reference a HostnameVerifier from the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | The Camel SSL setting reference. Use the # notation to reference the SSL Context. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | This option tells the CxfRsProducer to inspect return codes and will generate an Exception if the return code is larger than 207. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientAPI* | If it is true, the CxfRsProducer will use the HttpClientAPI to invoke the service. If it is false, the CxfRsProducer will use the ProxyClientAPI to invoke the service | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreDeleteMethodMessageBody* | This option is used to tell CxfRsProducer to ignore the message body of the DELETE method when using HTTP API. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxClientCacheSize* | This option allows you to configure the maximum size of the cache. The implementation caches CXF clients or ClientFactoryBean in CxfProvider and CxfRsProvider. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cxfRsConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.performInvocation* | When the option is true, Camel will perform the invocation of the resource class instance and put the response object into the exchange for further processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateContexts* | When the option is true, JAXRS UriInfo, HttpHeaders, Request and SecurityContext contexts will be available to custom CXFRS processors as typed Camel exchange properties. These contexts can be used to analyze the current requests using JAX-RS API. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-cxfrs-kafka-connector/src/main/docs/camel-cxfrs-kafka-source-connector.adoc b/connectors/camel-cxfrs-kafka-connector/src/main/docs/camel-cxfrs-kafka-source-connector.adoc
new file mode 100644
index 0000000..9e6011a
--- /dev/null
+++ b/connectors/camel-cxfrs-kafka-connector/src/main/docs/camel-cxfrs-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-cxfrs-kafka-connector-source]]
+= camel-cxfrs-kafka-connector source configuration
+
+When using camel-cxfrs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxfrs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxfrs source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.beanId* | To lookup an existing configured CxfRsEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.features* | Set the feature list to the CxfRs endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound REST messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.modelRef* | This option is used to specify the model file which is useful for the resource class without annotation. When using this option, then the service class can be omitted, to emulate document-only endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.providers* | Set custom JAX-RS provider(s) list to the CxfRs endpoint. You can specify a string with a list of providers to lookup in the registy separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceClasses* | The resource classes which you want to export as REST service. Multiple classes can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaLocations* | Sets the locations of the schema(s) which can be used to validate the incoming XML or JAXB-driven JSON. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindingStyle* | Sets how requests and responses will be mapped to/from Camel. Two values are possible: SimpleConsumer: This binding style processes request parameters, multiparts, etc. and maps them to IN headers, IN attachments and to the message body. It aims to eliminate low-level processing of org.apache.cxf.message.MessageContentsList. It also also adds more flexibility and simplicity to the response mapping. Only available for consumers. Default: The default style. For consumers this passes on a MessageContentsList to the route, requiring low-level processing in the route. This is the traditional binding style, which simply dumps the org.apache.cxf.message.MessageContentsList coming in from the CXF stack onto the IN message body. The user is then responsible for processing it according to the contract defined by the JAX-RS method signature. Custom: allows you to specify a custom binding through the binding option. One of: [SimpleConsumer] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publishedEndpointUrl* | This option can override the endpointUrl that published from the WADL which can be accessed with resource address url plus _wadl | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceBeans* | The service beans (the bean ids to lookup in the registry) which you want to export as REST service. Multiple beans can be separated by comma | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cxfRsConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.performInvocation* | When the option is true, Camel will perform the invocation of the resource class instance and put the response object into the exchange for further processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.propagateContexts* | When the option is true, JAXRS UriInfo, HttpHeaders, Request and SecurityContext contexts will be available to custom CXFRS processors as typed Camel exchange properties. These contexts can be used to analyze the current requests using JAX-RS API. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dataformat-kafka-connector/pom.xml b/connectors/camel-dataformat-kafka-connector/pom.xml
index 2ec088c..760ffc2 100644
--- a/connectors/camel-dataformat-kafka-connector/pom.xml
+++ b/connectors/camel-dataformat-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-dataformat-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: dataformat</name>
diff --git a/connectors/camel-dataformat-kafka-connector/src/main/assembly/package.xml b/connectors/camel-dataformat-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-dataformat-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-dataformat-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-dataformat-kafka-connector/src/main/docs/camel-dataformat-kafka-sink-connector.adoc b/connectors/camel-dataformat-kafka-connector/src/main/docs/camel-dataformat-kafka-sink-connector.adoc
new file mode 100644
index 0000000..47da491
--- /dev/null
+++ b/connectors/camel-dataformat-kafka-connector/src/main/docs/camel-dataformat-kafka-sink-connector.adoc
@@ -0,0 +1,33 @@
+// kafka-connector options: START
+[[camel-dataformat-kafka-connector-sink]]
+= camel-dataformat-kafka-connector sink configuration
+
+When using camel-dataformat-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataformat-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataformat sink connector supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of data format | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.operation* | Operation to use either marshal or unmarshal One of: [marshal] [unmarshal] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataformat.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataformat.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dataset-kafka-connector/pom.xml b/connectors/camel-dataset-kafka-connector/pom.xml
index c5dc376..8fdb8c9 100644
--- a/connectors/camel-dataset-kafka-connector/pom.xml
+++ b/connectors/camel-dataset-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-dataset-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: dataset</name>
diff --git a/connectors/camel-dataset-kafka-connector/src/main/assembly/package.xml b/connectors/camel-dataset-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-dataset-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-dataset-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-dataset-kafka-connector/src/main/docs/camel-dataset-kafka-sink-connector.adoc b/connectors/camel-dataset-kafka-connector/src/main/docs/camel-dataset-kafka-sink-connector.adoc
new file mode 100644
index 0000000..052ec2b
--- /dev/null
+++ b/connectors/camel-dataset-kafka-connector/src/main/docs/camel-dataset-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-dataset-kafka-connector-sink]]
+= camel-dataset-kafka-connector sink configuration
+
+When using camel-dataset-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataset-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataset sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of DataSet to lookup in the registry | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataSetIndex* | Controls the behaviour of the CamelDataSetIndex header. For Consumers: - off = the header will not be set - strict/lenient = the header will be set For Producers: - off = the header value will not be verified, and will not be set if it is not present = strict = the header value must be present and will be verified = lenient = the header value will be verified if it is present, and will be set if it is not present One of: [strict] [lenient] [off] | "lenient" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.assertPeriod* | Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid. This is used for example to assert that exactly a number of messages arrives. For example if expectedMessageCount(int) was set to 5, then the assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 messages arrives, then you would need to wait a little period to ensure no further message arrives. This is what you can use this method for. By default this period is disabled. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumeDelay* | Allows a delay to be specified which causes a delay when a message is consumed by the producer (to simulate slow processing) | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expectedCount* | Specifies the expected number of message exchanges that should be received by this endpoint. Beware: If you want to expect that 0 messages, then take extra care, as 0 matches when the tests starts, so you need to set a assert period time to let the test run for a while to make sure there are still no messages arrived; for that use setAssertPeriod(long). An alternative is to use NotifyBuilder, and use the notifier to know when Camel is done routing some messages, before you call the assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times. If you want to assert that exactly n'th message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failFast* | Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportGroup* | A number that is used to turn on throughput logging based on groups of the size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultMinimumWaitTime* | Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultWaitTime* | Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainFirst* | Specifies to only retain the first n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the first 10 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainLast* | Specifies to only retain the last n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the last 20 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForEmptyTest* | Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyOnExchange* | Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. Is by default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dataset-kafka-connector/src/main/docs/camel-dataset-kafka-source-connector.adoc b/connectors/camel-dataset-kafka-connector/src/main/docs/camel-dataset-kafka-source-connector.adoc
new file mode 100644
index 0000000..32aacb1
--- /dev/null
+++ b/connectors/camel-dataset-kafka-connector/src/main/docs/camel-dataset-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-dataset-kafka-connector-source]]
+= camel-dataset-kafka-connector source configuration
+
+When using camel-dataset-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataset-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataset source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of DataSet to lookup in the registry | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataSetIndex* | Controls the behaviour of the CamelDataSetIndex header. For Consumers: - off = the header will not be set - strict/lenient = the header will be set For Producers: - off = the header value will not be verified, and will not be set if it is not present = strict = the header value must be present and will be verified = lenient = the header value will be verified if it is present, and will be set if it is not present One of: [strict] [lenient] [off] | "lenient" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Time period in millis to wait before starting sending messages. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minRate* | Wait until the DataSet contains at least this number of messages | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preloadSize* | Sets how many messages should be preloaded (sent) before the route completes its initialization | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.produceDelay* | Allows a delay to be specified which causes a delay when a message is sent by the consumer (to simulate slow processing) | 3L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dataset-test-kafka-connector/pom.xml b/connectors/camel-dataset-test-kafka-connector/pom.xml
index aa220aa..2d9b772 100644
--- a/connectors/camel-dataset-test-kafka-connector/pom.xml
+++ b/connectors/camel-dataset-test-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-dataset-test-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: dataset-test</name>
diff --git a/connectors/camel-dataset-test-kafka-connector/src/main/assembly/package.xml b/connectors/camel-dataset-test-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-dataset-test-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-dataset-test-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-dataset-test-kafka-connector/src/main/docs/camel-dataset-test-kafka-sink-connector.adoc b/connectors/camel-dataset-test-kafka-connector/src/main/docs/camel-dataset-test-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8dd94fc
--- /dev/null
+++ b/connectors/camel-dataset-test-kafka-connector/src/main/docs/camel-dataset-test-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-dataset-test-kafka-connector-sink]]
+= camel-dataset-test-kafka-connector sink configuration
+
+When using camel-dataset-test-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataset-test-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataset-test sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of endpoint to lookup in the registry to use for polling messages used for testing | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.anyOrder* | Whether the expected messages should arrive in the same order or can be in any order. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.assertPeriod* | Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid. This is used for example to assert that exactly a number of messages arrives. For example if expectedMessageCount(int) was set to 5, then the assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 messages arrives, then you would need to wait a little period to ensure no further message arrives. This is what you can use this method for. By default this period is disabled. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiter* | The split delimiter to use when split is enabled. By default the delimiter is new line based. The delimiter can be a regular expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expectedCount* | Specifies the expected number of message exchanges that should be received by this endpoint. Beware: If you want to expect that 0 messages, then take extra care, as 0 matches when the tests starts, so you need to set a assert period time to let the test run for a while to make sure there are still no messages arrived; for that use setAssertPeriod(long). An alternative is to use NotifyBuilder, and use the notifier to know when Camel is done routing some messages, before you call the assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times. If you want to assert that exactly n'th message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failFast* | Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportGroup* | A number that is used to turn on throughput logging based on groups of the size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultMinimumWaitTime* | Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultWaitTime* | Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainFirst* | Specifies to only retain the first n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the first 10 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainLast* | Specifies to only retain the last n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the last 20 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForEmptyTest* | Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.split* | If enabled the messages loaded from the test endpoint will be split using new line delimiters so each line is an expected message. For example to use a file endpoint to load a file where each line is an expected message. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout to use when polling for message bodies from the URI | 2000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyOnExchange* | Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. Is by default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset-test.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset-test.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-debezium-mongodb-kafka-connector/pom.xml b/connectors/camel-debezium-mongodb-kafka-connector/pom.xml
index 3e02843..dd4ea5a 100644
--- a/connectors/camel-debezium-mongodb-kafka-connector/pom.xml
+++ b/connectors/camel-debezium-mongodb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-debezium-mongodb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: debezium-mongodb</name>
diff --git a/connectors/camel-debezium-mongodb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-debezium-mongodb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-debezium-mongodb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-debezium-mongodb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-debezium-mongodb-kafka-connector/src/main/docs/camel-debezium-mongodb-kafka-source-connector.adoc b/connectors/camel-debezium-mongodb-kafka-connector/src/main/docs/camel-debezium-mongodb-kafka-source-connector.adoc
new file mode 100644
index 0000000..086a8d1
--- /dev/null
+++ b/connectors/camel-debezium-mongodb-kafka-connector/src/main/docs/camel-debezium-mongodb-kafka-source-connector.adoc
@@ -0,0 +1,74 @@
+// kafka-connector options: START
+[[camel-debezium-mongodb-kafka-connector-source]]
+= camel-debezium-mongodb-kafka-connector source configuration
+
+When using camel-debezium-mongodb-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-mongodb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-mongodb source connector supports 48 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.collectionBlacklist* | Description is not available here, please check Debezium website for corresponding key 'collection.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.collectionWhitelist* | The collections for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectBackoffInitialDelayMs* | The initial delay when trying to reconnect to a primary after a connection cannot be made or when no primary is available. Defaults to 1 second (1000 ms). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectBackoffMaxDelayMs* | The maximum delay when trying to reconnect to a primary after a connection cannot be made or when no primary is available. Defaults to 120 second (120,000 ms). | 120000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectMaxAttempts* | Maximum number of failed connection attempts to a replica set primary before an exception occurs and task is aborted. Defaults to 16, which with the defaults for 'connect.backoff.initial.delay.ms' and 'connect.backoff.max.delay.ms' results in just over 20 minutes of attempts before failing. | 16 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseBlacklist* | The databases for which changes are to be excluded | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseWhitelist* | The databases for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fieldBlacklist* | Description is not available here, please check Debezium website for corresponding key 'field.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fieldRenames* | Description is not available here, please check Debezium website for corresponding key 'field.renames' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialSyncMaxThreads* | Maximum number of threads used to perform an intial sync of the collections in a replica set. Defaults to 1. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbHosts* | The hostname and port pairs (in the form 'host' or 'host:port') of the MongoDB server(s) in the replica set. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbMembersAutoDiscover* | Specifies whether the addresses in 'hosts' are seeds that should be used to discover all members of the cluster or replica set ('true'), or whether the address(es) in 'hosts' should be used as is ('false'). The default is 'true'. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbName* | Unique name that identifies the MongoDB replica set or cluster and all recorded offsets, andthat is used as a prefix for all schemas and topics. Each distinct MongoDB installation should have a separate namespace and monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.mongodbPassword* | Password to be used when connecting to MongoDB, if necessary. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.mongodbSslEnabled* | Should connector use SSL to connect to MongoDB instances | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbSslInvalidHostname Allowed* | Whether invalid host names are allowed when using SSL. If true the connection will not prevent man-in-the-middle attacks | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbUser* | Database user for connecting to MongoDB, if necessary. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'initial' (the default) to specify the connector should always perform an initial sync when required; 'never' to specify the connector should never perform an initial sync | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mongodb.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mongodb.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mongodb.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-debezium-mysql-kafka-connector/pom.xml b/connectors/camel-debezium-mysql-kafka-connector/pom.xml
index 1300c70..680385e 100644
--- a/connectors/camel-debezium-mysql-kafka-connector/pom.xml
+++ b/connectors/camel-debezium-mysql-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-debezium-mysql-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: debezium-mysql</name>
diff --git a/connectors/camel-debezium-mysql-kafka-connector/src/main/assembly/package.xml b/connectors/camel-debezium-mysql-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-debezium-mysql-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-debezium-mysql-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-debezium-mysql-kafka-connector/src/main/docs/camel-debezium-mysql-kafka-source-connector.adoc b/connectors/camel-debezium-mysql-kafka-connector/src/main/docs/camel-debezium-mysql-kafka-source-connector.adoc
new file mode 100644
index 0000000..5b71b6d
--- /dev/null
+++ b/connectors/camel-debezium-mysql-kafka-connector/src/main/docs/camel-debezium-mysql-kafka-source-connector.adoc
@@ -0,0 +1,104 @@
+// kafka-connector options: START
+[[camel-debezium-mysql-kafka-connector-source]]
+= camel-debezium-mysql-kafka-connector source configuration
+
+When using camel-debezium-mysql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-mysql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-mysql source connector supports 78 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bigintUnsignedHandlingMode* | Specify how BIGINT UNSIGNED columns should be represented in change events, including:'precise' uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'long' (the default) represents values using Java's 'long', which may not offer the precision but will be far easier to use in consumers. | "long" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binlogBufferSize* | The size of a look-ahead buffer used by the binlog reader to decide whether the transaction in progress is going to be committed or rolled back. Use 0 to disable look-ahead buffering. Defaults to 0 (i.e. buffering is disabled). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.columnBlacklist* | Description is not available here, please check Debezium website for corresponding key 'column.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectKeepAlive* | Whether a separate thread should be used to ensure the connection is kept alive. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectKeepAliveIntervalMs* | Interval in milliseconds to wait for connection checking if keep alive thread is used. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeoutMs* | Maximum time in milliseconds to wait after trying to connect to the database before timing out. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseBlacklist* | Description is not available here, please check Debezium website for corresponding key 'database.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistory* | The name of the DatabaseHistory class that should be used to store and recover database schema changes. The configuration properties for the history are prefixed with the 'database.history.' string. | "io.debezium.relational.history.FileDatabaseHistory" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafka BootstrapServers* | A list of host/port pairs that the connector will use for establishing the initial connection to the Kafka cluster for retrieving database schema history previously stored by the connector. This should point to the same Kafka cluster used by the Kafka Connect process. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery Attempts* | The number of attempts in a row that no data are returned from Kafka before recover completes. The maximum amount of time to wait after receiving no data is (recovery.attempts) x (recovery.poll.interval.ms). | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery PollIntervalMs* | The number of milliseconds to wait while polling for persisted data during recovery. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaTopic* | The name of the topic for the database schema history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistorySkip UnparseableDdl* | Controls the action Debezium will take when it meets a DDL statement in binlog, that it cannot parse.By default the connector will stop operating but by changing the setting it can ignore the statements which it cannot parse. If skipping is enabled then Debezium can miss metadata changes. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryStoreOnly MonitoredTablesDdl* | Controls what DDL will Debezium store in database history.By default (false) Debezium will store all incoming DDL statements. If set to truethen only DDL that manipulates a monitored table will be stored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHostname* | Resolvable hostname or IP address of the MySQL database server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseInitialStatements* | A semicolon separated list of SQL statements to be executed when a JDBC connection (not binlog reading connection) to the database is established. Note that the connector may establish JDBC connections at its own discretion, so this should typically be used for configuration of session parameters only,but not for executing DML statements. Use doubled semicolon (';;') to use a semicolon as a character and not as a delimiter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseJdbcDriver* | JDBC Driver class name used to connect to the MySQL database server. | "class com.mysql.cj.jdbc.Driver" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databasePassword* | Password of the MySQL database user to be used when connecting to the database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databasePort* | Port of the MySQL database server. | 3306 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerId* | A numeric ID of this database client, which must be unique across all currently-running database processes in the cluster. This connector joins the MySQL database cluster as another server (with this unique ID) so it can read the binlog. By default, a random number is generated between 5400 and 6400. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerIdOffset* | Only relevant if parallel snapshotting is configured. During parallel snapshotting, multiple (4) connections open to the database client, and they each need their own unique connection ID. This offset is used to generate those IDs from the base configured cluster ID. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerName* | Unique name that identifies the database server and all recorded offsets, and that is used as a prefix for all schemas and topics. Each distinct installation should have a separate namespace and be monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databaseSslKeystore* | Location of the Java keystore file containing an application process's own certificate and private key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslKeystorePassword* | Password to access the private key from the keystore file specified by 'ssl.keystore' configuration property or the 'javax.net.ssl.keyStore' system or JVM property. This password is used to unlock the keystore file (store password), and to decrypt the private key stored in the keystore (key password). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslMode* | Whether to use an encrypted connection to MySQL. Options include'disabled' (the default) to use an unencrypted connection; 'preferred' to establish a secure (encrypted) connection if the server supports secure connections, but fall back to an unencrypted connection otherwise; 'required' to use a secure (encrypted) connection, and fail if one cannot be established; 'verify_ca' like 'required' but additionally verify the server TLS certificate against the configured Certificate Authority (CA) certificates, or fail if no valid matching CA certificates are found; or'verify_identity' like 'verify_ca' but additionally verify that the server certificate matches the host to which the connection is attempted. | "disabled" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslTruststore* | Location of the Java truststore file containing the collection of CA certificates trusted by this application process (trust store). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslTruststore Password* | Password to unlock the keystore file (store password) specified by 'ssl.trustore' configuration property or the 'javax.net.ssl.trustStore' system or JVM property. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseUser* | Name of the MySQL database user to be used when connecting to the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseWhitelist* | The databases for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decimalHandlingMode* | Specify how DECIMAL and NUMERIC columns should be represented in change events, including:'precise' (the default) uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to represent values; 'double' represents values using Java's 'double', which may not offer the precision but will be far easier to use in consumers. | "precise" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableTimeAdjuster* | MySQL allows user to insert year value as either 2-digit or 4-digit. In case of two digit the value is automatically mapped into 1970 - 2069.false - delegates the implicit conversion to the databasetrue - (the default) Debezium makes the conversion | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventDeserializationFailure HandlingMode* | Specify how failures during deserialization of binlog events (i.e. when encountering a corrupted event) should be handled, including:'fail' (the default) an exception indicating the problematic event and its binlog position is raised, causing the connector to be stopped; 'warn' the problematic event and its binlog position will be logged and the event will be skipped;'ignore' the problematic event will be skipped. | "fail" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidNewChannelPosition* | If set to 'latest', when connector sees new GTID, it will start consuming gtid channel from the server latest executed gtid position. If 'earliest' connector starts reading channel from first available (not purged) gtid position on the server. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidSourceExcludes* | The source UUIDs used to exclude GTID ranges when determine the starting position in the MySQL server's binlog. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidSourceFilterDmlEvents* | If set to true, we will only produce DML events into Kafka for transactions that were written on mysql servers with UUIDs matching the filters defined by the gtid.source.includes or gtid.source.excludes configuration options, if they are specified. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidSourceIncludes* | The source UUIDs used to include GTID ranges when determine the starting position in the MySQL server's binlog. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeQuery* | Whether the connector should include the original SQL query that generated the change event. Note: This option requires MySQL be configured with the binlog_rows_query_log_events option set to ON. Query will not be present for events generated from snapshot. WARNING: Enabling this option may expose tables or fields explicitly blacklisted or masked by including the original SQL statement in the change event. For this reason the default value is 'false'. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeSchemaChanges* | Whether the connector should publish changes in the database schema to a Kafka topic with the same name as the database server ID. Each schema change will be recorded using a key that contains the database name and whose value includes the DDL statement(s).The default is 'true'. This is independent of how the connector internally records database history. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inconsistentSchemaHandling Mode* | Specify how binlog events that belong to a table missing from internal schema representation (i.e. internal representation is not consistent with database) should be handled, including:'fail' (the default) an exception indicating the problematic event and its binlog position is raised, causing the connector to be stopped; 'warn' the problematic event and its binlog position will be logged and the event will be skipped;'ignore' the problematic event will be skipped. | "fail" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageKeyColumns* | A semicolon-separated list of expressions that match fully-qualified tables and column(s) to be used as message key. Each expression must match the pattern ':',where the table names could be defined as (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the specific connector,and the key columns are a comma-separated list of columns representing the custom key. For any table without an explicit key configuration the table's primary key column(s) will be used as message key.Example: dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotLockingMode* | Controls how long the connector holds onto the global read lock while it is performing a snapshot. The default is 'minimal', which means the connector holds the global read lock (and thus prevents any updates) for just the initial portion of the snapshot while the database schemas and other metadata are being read. The remaining work in a snapshot involves selecting all rows from each table, and this can be done using the snapshot process' REPEATABLE READ transaction even when the lock is no longer held and other operations are updating the database. However, in some cases it may be desirable to block all writes for the entire duration of the snapshot; in such cases set this property to 'extended'. Using a value of 'none' will prevent the connector from acquiring any table locks during the snapshot process. This mode can only be used in combination with snapshot.mode values of 'schema_only' or 'schema_only_recovery' and is only safe to use if no schema changes are happening while the snapshot is taken. | "minimal" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'when_needed' to specify that the connector run a snapshot upon startup whenever it deems it necessary; 'initial' (the default) to specify the connector can run a snapshot only when no offsets are available for the logical server name; 'initial_only' same as 'initial' except the connector should stop after completing the snapshot and before it would normally read the binlog; and'never' to specify the connector should never run a snapshot and that upon first startup the connector should read from the beginning of the binlog. The 'never' mode should be used with care, and only when the binlog is known to contain all history. | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotNewTables* | BETA FEATURE: On connector restart, the connector will check if there have been any new tables added to the configuration, and snapshot them. There is presently only two options:'off': Default behavior. Do not snapshot new tables.'parallel': The snapshot of the new tables will occur in parallel to the continued binlog reading of the old tables. When the snapshot completes, an independent binlog reader will begin reading the events for the new tables until it catches up to present time. At this point, both old and new binlog readers will be momentarily halted and new binlog reader will start that will read the binlog for all configured tables. The parallel binlog reader will have a configured server id of 10000 the primary binlog reader's server id. | "off" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotSelectStatement Overrides* | This property contains a comma-separated list of fully-qualified tables (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on thespecific connectors . Select statements for the individual tables are specified in further configuration properties, one for each table, identified by the id 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME', respectively. The value of those properties is the select statement to use when retrieving data from the specific table during snapshotting. A possible use case for large append-only tables is setting a specific point where to start (resume) snapshotting, in case a previous snapshotting was interrupted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableBlacklist* | Description is not available here, please check Debezium website for corresponding key 'table.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableIgnoreBuiltin* | Flag specifying whether built-in tables should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableWhitelist* | The tables for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timePrecisionMode* | Time, date and timestamps can be represented with different kinds of precisions, including:'adaptive_time_microseconds': the precision of date and timestamp values is based the database column's precision; but time fields always use microseconds precision;'connect': always represents time, date and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, which uses millisecond precision regardless of the database columns' precision. | "adaptive_time_microseconds" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mysql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mysql.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mysql.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-debezium-postgres-kafka-connector/pom.xml b/connectors/camel-debezium-postgres-kafka-connector/pom.xml
index e5c48b3..5f42cf9 100644
--- a/connectors/camel-debezium-postgres-kafka-connector/pom.xml
+++ b/connectors/camel-debezium-postgres-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-debezium-postgres-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: debezium-postgres</name>
diff --git a/connectors/camel-debezium-postgres-kafka-connector/src/main/assembly/package.xml b/connectors/camel-debezium-postgres-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-debezium-postgres-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-debezium-postgres-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-debezium-postgres-kafka-connector/src/main/docs/camel-debezium-postgres-kafka-source-connector.adoc b/connectors/camel-debezium-postgres-kafka-connector/src/main/docs/camel-debezium-postgres-kafka-source-connector.adoc
new file mode 100644
index 0000000..b596f5f
--- /dev/null
+++ b/connectors/camel-debezium-postgres-kafka-connector/src/main/docs/camel-debezium-postgres-kafka-source-connector.adoc
@@ -0,0 +1,96 @@
+// kafka-connector options: START
+[[camel-debezium-postgres-kafka-connector-source]]
+= camel-debezium-postgres-kafka-connector source configuration
+
+When using camel-debezium-postgres-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-postgres-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-postgres source connector supports 70 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.columnBlacklist* | Description is not available here, please check Debezium website for corresponding key 'column.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseDbname* | The name of the database the connector should be monitoring | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHostname* | Resolvable hostname or IP address of the Postgres database server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseInitialStatements* | A semicolon separated list of SQL statements to be executed when a JDBC connection to the database is established. Note that the connector may establish JDBC connections at its own discretion, so this should typically be used for configurationof session parameters only, but not for executing DML statements. Use doubled semicolon (';;') to use a semicolon as a character and not as a delimiter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databasePassword* | Password of the Postgres database user to be used when connecting to the database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databasePort* | Port of the Postgres database server. | 5432 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerName* | Unique name that identifies the database server and all recorded offsets, and that is used as a prefix for all schemas and topics. Each distinct installation should have a separate namespace and be monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databaseSslcert* | File containing the SSL Certificate for the client. See the Postgres SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslfactory* | A name of class to that creates SSL Sockets. Use org.postgresql.ssl.NonValidatingFactory to disable SSL validation in development environments | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslkey* | File containing the SSL private key for the client. See the Postgres SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslmode* | Whether to use an encrypted connection to Postgres. Options include'disable' (the default) to use an unencrypted connection; 'require' to use a secure (encrypted) connection, and fail if one cannot be established; 'verify-ca' like 'required' but additionally verify the server TLS certificate against the configured Certificate Authority (CA) certificates, or fail if no valid matching CA certificates are found; or'verify-full' like 'verify-ca' but additionally verify that the server certificate matches the host to which the connection is attempted. | "disable" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslpassword* | Password to access the client private key from the file specified by 'database.sslkey'. See the Postgres SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslrootcert* | File containing the root certificate(s) against which the server is validated. See the Postgres JDBC SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseTcpkeepalive* | Enable or disable TCP keep-alive probe to avoid dropping TCP connection | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseUser* | Name of the Postgres database user to be used when connecting to the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decimalHandlingMode* | Specify how DECIMAL and NUMERIC columns should be represented in change events, including:'precise' (the default) uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to represent values; 'double' represents values using Java's 'double', which may not offer the precision but will be far easier to use in consumers. | "precise" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hstoreHandlingMode* | Specify how HSTORE columns should be represented in change events, including:'json' represents values as json string'map' (default) represents values using java.util.Map | "json" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeUnknownDatatypes* | Specify whether the fields of data type not supported by Debezium should be processed:'false' (the default) omits the fields; 'true' converts the field into an implementation dependent binary representation. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.intervalHandlingMode* | Specify how INTERVAL columns should be represented in change events, including:'string' represents values as an exact ISO formatted string'numeric' (default) represents values using the inexact conversion into microseconds | "numeric" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageKeyColumns* | A semicolon-separated list of expressions that match fully-qualified tables and column(s) to be used as message key. Each expression must match the pattern ':',where the table names could be defined as (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the specific connector,and the key columns are a comma-separated list of columns representing the custom key. For any table without an explicit key configuration the table's primary key column(s) will be used as message key.Example: dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pluginName* | The name of the Postgres logical decoding plugin installed on the server. Supported values are 'decoderbufs' and 'wal2json'. Defaults to 'decoderbufs'. | "decoderbufs" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicationName* | The name of the Postgres 10 publication used for streaming changes from a plugin.Defaults to 'dbz_publication' | "dbz_publication" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaBlacklist* | The schemas for which events must not be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaRefreshMode* | Specify the conditions that trigger a refresh of the in-memory schema for a table. 'columns_diff' (the default) is the safest mode, ensuring the in-memory schema stays in-sync with the database table's schema at all times. 'columns_diff_exclude_unchanged_toast' instructs the connector to refresh the in-memory schema cache if there is a discrepancy between it and the schema derived from the incoming message, unless unchanged TOASTable data fully accounts for the discrepancy. This setting can improve connector performance significantly if there are frequently-updated tables that have TOASTed data that are rarely part of these updates. However, it is possible for the in-memory schema to become outdated if TOASTable columns are dropped from the table. | "columns_diff" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaWhitelist* | The schemas for which events should be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotDropOnStop* | Whether or not to drop the logical replication slot when the connector finishes orderlyBy default the replication is kept so that on restart progress can resume from the last recorded location | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotMaxRetries* | How many times to retry connecting to a replication slot when an attempt fails. | 6 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotName* | The name of the Postgres logical decoding slot created for streaming changes from a plugin.Defaults to 'debezium | "debezium" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotRetryDelayMs* | The number of milli-seconds to wait between retry attempts when the connector fails to connect to a replication slot. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotStreamParams* | Any optional parameters used by logical decoding plugin. Semi-colon separated. E.g. 'add-tables=public.table,public.table2;include-lsn=true' | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotCustomClass* | When 'snapshot.mode' is set as custom, this setting must be set to specify a fully qualified class name to load (via the default class loader).This class must implement the 'Snapshotter' interface and is called on each app boot to determine whether to do a snapshot and how to build queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotLockTimeoutMs* | The maximum number of millis to wait for table locks at the beginning of a snapshot. If locks cannot be acquired in this time frame, the snapshot will be aborted. Defaults to 10 seconds | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'always' to specify that the connector run a snapshot each time it starts up; 'initial' (the default) to specify the connector can run a snapshot only when no offsets are available for the logical server name; 'initial_only' same as 'initial' except the connector should stop after completing the snapshot and before it would normally start emitting changes;'never' to specify the connector should never run a snapshot and that upon first startup the connector should read from the last position (LSN) recorded by the server; and'exported' to specify the connector should run a snapshot based on the position when the replication slot was created; 'custom' to specify a custom class with 'snapshot.custom_class' which will be loaded and used to determine the snapshot, see docs for more details. | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotSelectStatement Overrides* | This property contains a comma-separated list of fully-qualified tables (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on thespecific connectors . Select statements for the individual tables are specified in further configuration properties, one for each table, identified by the id 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME', respectively. The value of those properties is the select statement to use when retrieving data from the specific table during snapshotting. A possible use case for large append-only tables is setting a specific point where to start (resume) snapshotting, in case a previous snapshotting was interrupted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statusUpdateIntervalMs* | Frequency in milliseconds for sending replication connection status updates to the server. Defaults to 10 seconds (10000 ms). | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableBlacklist* | Description is not available here, please check Debezium website for corresponding key 'table.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableWhitelist* | The tables for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timePrecisionMode* | Time, date, and timestamps can be represented with different kinds of precisions, including:'adaptive' (the default) bases the precision of time, date, and timestamp values on the database column's precision; 'adaptive_time_microseconds' like 'adaptive' mode, but TIME fields always use microseconds precision;'connect' always represents time, date, and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, which uses millisecond precision regardless of the database columns' precision . | "adaptive" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toastedValuePlaceholder* | Specify the constant that will be provided by Debezium to indicate that the original value is a toasted value not provided by the database.If starts with 'hex:' prefix it is expected that the rest of the string repesents hexadecimally encoded octets. | "__debezium_unavailable_value" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.xminFetchIntervalMs* | Specify how often (in ms) the xmin will be fetched from the replication slot. This xmin value is exposed by the slot which gives a lower bound of where a new replication slot could start from. The lower the value, the more likely this value is to be the current 'true' value, but the bigger the performance cost. The bigger the value, the less likely this value is to be the current 'true' value, but the lower the performance penalty. The default is set to 0 ms, which disables tracking xmin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-postgres.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-postgres.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-postgres.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-debezium-sqlserver-kafka-connector/pom.xml b/connectors/camel-debezium-sqlserver-kafka-connector/pom.xml
index a4f78bf..b7e80d3 100644
--- a/connectors/camel-debezium-sqlserver-kafka-connector/pom.xml
+++ b/connectors/camel-debezium-sqlserver-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-debezium-sqlserver-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: debezium-sqlserver</name>
diff --git a/connectors/camel-debezium-sqlserver-kafka-connector/src/main/assembly/package.xml b/connectors/camel-debezium-sqlserver-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-debezium-sqlserver-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-debezium-sqlserver-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-debezium-sqlserver-kafka-connector/src/main/docs/camel-debezium-sqlserver-kafka-source-connector.adoc b/connectors/camel-debezium-sqlserver-kafka-connector/src/main/docs/camel-debezium-sqlserver-kafka-source-connector.adoc
new file mode 100644
index 0000000..e6ea8f7
--- /dev/null
+++ b/connectors/camel-debezium-sqlserver-kafka-connector/src/main/docs/camel-debezium-sqlserver-kafka-source-connector.adoc
@@ -0,0 +1,78 @@
+// kafka-connector options: START
+[[camel-debezium-sqlserver-kafka-connector-source]]
+= camel-debezium-sqlserver-kafka-connector source configuration
+
+When using camel-debezium-sqlserver-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-sqlserver-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-sqlserver source connector supports 52 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.columnBlacklist* | Description is not available here, please check Debezium website for corresponding key 'column.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseDbname* | The name of the database the connector should be monitoring. When working with a multi-tenant set-up, must be set to the CDB name. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistory* | The name of the DatabaseHistory class that should be used to store and recover database schema changes. The configuration properties for the history are prefixed with the 'database.history.' string. | "io.debezium.relational.history.FileDatabaseHistory" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafka BootstrapServers* | A list of host/port pairs that the connector will use for establishing the initial connection to the Kafka cluster for retrieving database schema history previously stored by the connector. This should point to the same Kafka cluster used by the Kafka Connect process. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery Attempts* | The number of attempts in a row that no data are returned from Kafka before recover completes. The maximum amount of time to wait after receiving no data is (recovery.attempts) x (recovery.poll.interval.ms). | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery PollIntervalMs* | The number of milliseconds to wait while polling for persisted data during recovery. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaTopic* | The name of the topic for the database schema history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHostname* | Resolvable hostname or IP address of the SQL Server database server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databasePassword* | Password of the SQL Server database user to be used when connecting to the database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databasePort* | Port of the SQL Server database server. | 1433 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerName* | Unique name that identifies the database server and all recorded offsets, and that is used as a prefix for all schemas and topics. Each distinct installation should have a separate namespace and be monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databaseServerTimezone* | The timezone of the server used to correctly shift the commit transaction timestamp on the client sideOptions include: Any valid Java ZoneId | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseUser* | Name of the SQL Server database user to be used when connecting to the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decimalHandlingMode* | Specify how DECIMAL and NUMERIC columns should be represented in change events, including:'precise' (the default) uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to represent values; 'double' represents values using Java's 'double', which may not offer the precision but will be far easier to use in consumers. | "precise" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageKeyColumns* | A semicolon-separated list of expressions that match fully-qualified tables and column(s) to be used as message key. Each expression must match the pattern ':',where the table names could be defined as (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the specific connector,and the key columns are a comma-separated list of columns representing the custom key. For any table without an explicit key configuration the table's primary key column(s) will be used as message key.Example: dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotLockTimeoutMs* | The maximum number of millis to wait for table locks at the beginning of a snapshot. If locks cannot be acquired in this time frame, the snapshot will be aborted. Defaults to 10 seconds | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'initial' (the default) to specify the connector should run a snapshot only when no offsets are available for the logical server name; 'schema_only' to specify the connector should run a snapshot of the schema when no offsets are available for the logical server name. | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotSelectStatement Overrides* | This property contains a comma-separated list of fully-qualified tables (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on thespecific connectors . Select statements for the individual tables are specified in further configuration properties, one for each table, identified by the id 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME', respectively. The value of those properties is the select statement to use when retrieving data from the specific table during snapshotting. A possible use case for large append-only tables is setting a specific point where to start (resume) snapshotting, in case a previous snapshotting was interrupted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableBlacklist* | Description is not available here, please check Debezium website for corresponding key 'table.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableIgnoreBuiltin* | Flag specifying whether built-in tables should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableWhitelist* | The tables for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timePrecisionMode* | Time, date, and timestamps can be represented with different kinds of precisions, including:'adaptive' (the default) bases the precision of time, date, and timestamp values on the database column's precision; 'adaptive_time_microseconds' like 'adaptive' mode, but TIME fields always use microseconds precision;'connect' always represents time, date, and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, which uses millisecond precision regardless of the database columns' precision . | "adaptive" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-sqlserver.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-sqlserver.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-sqlserver.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-digitalocean-kafka-connector/pom.xml b/connectors/camel-digitalocean-kafka-connector/pom.xml
index ce47370..cf31674 100644
--- a/connectors/camel-digitalocean-kafka-connector/pom.xml
+++ b/connectors/camel-digitalocean-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-digitalocean-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: digitalocean</name>
diff --git a/connectors/camel-digitalocean-kafka-connector/src/main/assembly/package.xml b/connectors/camel-digitalocean-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-digitalocean-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-digitalocean-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-digitalocean-kafka-connector/src/main/docs/camel-digitalocean-kafka-sink-connector.adoc b/connectors/camel-digitalocean-kafka-connector/src/main/docs/camel-digitalocean-kafka-sink-connector.adoc
new file mode 100644
index 0000000..03fdda5
--- /dev/null
+++ b/connectors/camel-digitalocean-kafka-connector/src/main/docs/camel-digitalocean-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-digitalocean-kafka-connector-sink]]
+= camel-digitalocean-kafka-connector sink configuration
+
+When using camel-digitalocean-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-digitalocean-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-digitalocean sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | The operation to perform to the given resource. One of: [create] [update] [delete] [list] [ownList] [get] [listBackups] [listActions] [listNeighbors] [listSnapshots] [listKernels] [listAllNeighbors] [enableBackups] [disableBackups] [reboot] [powerCycle] [shutdown] [powerOn] [powerOff] [restore] [resetPassword] [resize] [rebuild] [rename] [changeKernel] [enableIpv6] [enablePrivateNetworking] [takeSnapshot] [transfer] [convert] [attach] [detach] [assign] [unassign] [tag] [untag] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.page* | Use for pagination. Force the page number. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.perPage* | Use for pagination. Set the number of item per request. The maximum number of results per page is 200. | "25" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resource* | The DigitalOcean resource type on which perform the operation. One of: [account] [actions] [blockStorages] [droplets] [mages] [snapshots] [keys] [regions] [sizes] [floatingIPs] [tags] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.digitalOceanClient* | To use a existing configured DigitalOceanClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | Set a proxy host if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | Set a proxy password if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | Set a proxy port if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | Set a proxy host if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthToken* | DigitalOcean OAuth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.digitalocean.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.digitalocean.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-direct-kafka-connector/pom.xml b/connectors/camel-direct-kafka-connector/pom.xml
index 7c2e1f4..f239800 100644
--- a/connectors/camel-direct-kafka-connector/pom.xml
+++ b/connectors/camel-direct-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-direct-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: direct</name>
diff --git a/connectors/camel-direct-kafka-connector/src/main/assembly/package.xml b/connectors/camel-direct-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-direct-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-direct-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-direct-kafka-connector/src/main/docs/camel-direct-kafka-sink-connector.adoc b/connectors/camel-direct-kafka-connector/src/main/docs/camel-direct-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8c94742
--- /dev/null
+++ b/connectors/camel-direct-kafka-connector/src/main/docs/camel-direct-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-direct-kafka-connector-sink]]
+= camel-direct-kafka-connector sink configuration
+
+When using camel-direct-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of direct endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a DIRECT endpoint with no active consumers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-direct-kafka-connector/src/main/docs/camel-direct-kafka-source-connector.adoc b/connectors/camel-direct-kafka-connector/src/main/docs/camel-direct-kafka-source-connector.adoc
new file mode 100644
index 0000000..c789d64
--- /dev/null
+++ b/connectors/camel-direct-kafka-connector/src/main/docs/camel-direct-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-direct-kafka-connector-source]]
+= camel-direct-kafka-connector source configuration
+
+When using camel-direct-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of direct endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-direct-vm-kafka-connector/pom.xml b/connectors/camel-direct-vm-kafka-connector/pom.xml
index 1b18094..a9ce4ef 100644
--- a/connectors/camel-direct-vm-kafka-connector/pom.xml
+++ b/connectors/camel-direct-vm-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-direct-vm-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: direct-vm</name>
diff --git a/connectors/camel-direct-vm-kafka-connector/src/main/assembly/package.xml b/connectors/camel-direct-vm-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-direct-vm-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-direct-vm-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-direct-vm-kafka-connector/src/main/docs/camel-direct-vm-kafka-sink-connector.adoc b/connectors/camel-direct-vm-kafka-connector/src/main/docs/camel-direct-vm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a7f958c
--- /dev/null
+++ b/connectors/camel-direct-vm-kafka-connector/src/main/docs/camel-direct-vm-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-direct-vm-kafka-connector-sink]]
+= camel-direct-vm-kafka-connector sink configuration
+
+When using camel-direct-vm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct-vm sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of direct-vm endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a Direct-VM endpoint with no active consumers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.headerFilterStrategy* | Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-direct-vm-kafka-connector/src/main/docs/camel-direct-vm-kafka-source-connector.adoc b/connectors/camel-direct-vm-kafka-connector/src/main/docs/camel-direct-vm-kafka-source-connector.adoc
new file mode 100644
index 0000000..2718051
--- /dev/null
+++ b/connectors/camel-direct-vm-kafka-connector/src/main/docs/camel-direct-vm-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-direct-vm-kafka-connector-source]]
+= camel-direct-vm-kafka-connector source configuration
+
+When using camel-direct-vm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct-vm source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of direct-vm endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.headerFilterStrategy* | Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-disruptor-kafka-connector/pom.xml b/connectors/camel-disruptor-kafka-connector/pom.xml
index 0a3ecda..027736b 100644
--- a/connectors/camel-disruptor-kafka-connector/pom.xml
+++ b/connectors/camel-disruptor-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-disruptor-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: disruptor</name>
diff --git a/connectors/camel-disruptor-kafka-connector/src/main/assembly/package.xml b/connectors/camel-disruptor-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-disruptor-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-disruptor-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-disruptor-kafka-connector/src/main/docs/camel-disruptor-kafka-sink-connector.adoc b/connectors/camel-disruptor-kafka-connector/src/main/docs/camel-disruptor-kafka-sink-connector.adoc
new file mode 100644
index 0000000..72517e0
--- /dev/null
+++ b/connectors/camel-disruptor-kafka-connector/src/main/docs/camel-disruptor-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-disruptor-kafka-connector-sink]]
+= camel-disruptor-kafka-connector sink configuration
+
+When using camel-disruptor-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full Disruptor will block until the ringbuffer's capacity is no longer exhausted. By default, the calling thread will block and wait until the message can be accepted. By disabling this option, an exception will be thrown stating that the queue is full. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerType* | Defines the producers allowed on the Disruptor. The options allowed are: Multi to allow multiple producers and Single to enable certain optimizations only allowed when one concurrent producer (on one thread or otherwise synchronized) is active. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor.defaultBlockWhenFull* | To configure the default value for block when full The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultProducerType* | To configure the default value for DisruptorProducerType The default value is Multi. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-disruptor-kafka-connector/src/main/docs/camel-disruptor-kafka-source-connector.adoc b/connectors/camel-disruptor-kafka-connector/src/main/docs/camel-disruptor-kafka-source-connector.adoc
new file mode 100644
index 0000000..503d2f6
--- /dev/null
+++ b/connectors/camel-disruptor-kafka-connector/src/main/docs/camel-disruptor-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-disruptor-kafka-connector-source]]
+= camel-disruptor-kafka-connector source configuration
+
+When using camel-disruptor-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use Disruptor for Publish-Subscribe messaging. That is, you can send a message to the queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitStrategy* | Defines the strategy used by consumer threads to wait on new exchanges to be published. The options allowed are:Blocking, Sleeping, BusySpin and Yielding. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultConcurrent Consumers* | To configure the default number of concurrent consumers | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultMultipleConsumers* | To configure the default value for multiple consumers | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultWaitStrategy* | To configure the default value for DisruptorWaitStrategy The default value is Blocking. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-disruptor-vm-kafka-connector/pom.xml b/connectors/camel-disruptor-vm-kafka-connector/pom.xml
index 4fa39c3..bc2f924 100644
--- a/connectors/camel-disruptor-vm-kafka-connector/pom.xml
+++ b/connectors/camel-disruptor-vm-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-disruptor-vm-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: disruptor-vm</name>
diff --git a/connectors/camel-disruptor-vm-kafka-connector/src/main/assembly/package.xml b/connectors/camel-disruptor-vm-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-disruptor-vm-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-disruptor-vm-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-disruptor-vm-kafka-connector/src/main/docs/camel-disruptor-vm-kafka-sink-connector.adoc b/connectors/camel-disruptor-vm-kafka-connector/src/main/docs/camel-disruptor-vm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..404655b
--- /dev/null
+++ b/connectors/camel-disruptor-vm-kafka-connector/src/main/docs/camel-disruptor-vm-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-disruptor-vm-kafka-connector-sink]]
+= camel-disruptor-vm-kafka-connector sink configuration
+
+When using camel-disruptor-vm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor-vm sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full Disruptor will block until the ringbuffer's capacity is no longer exhausted. By default, the calling thread will block and wait until the message can be accepted. By disabling this option, an exception will be thrown stating that the queue is full. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerType* | Defines the producers allowed on the Disruptor. The options allowed are: Multi to allow multiple producers and Single to enable certain optimizations only allowed when one concurrent producer (on one thread or otherwise synchronized) is active. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor-vm.defaultBlockWhenFull* | To configure the default value for block when full The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultProducerType* | To configure the default value for DisruptorProducerType The default value is Multi. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-disruptor-vm-kafka-connector/src/main/docs/camel-disruptor-vm-kafka-source-connector.adoc b/connectors/camel-disruptor-vm-kafka-connector/src/main/docs/camel-disruptor-vm-kafka-source-connector.adoc
new file mode 100644
index 0000000..233ea3a
--- /dev/null
+++ b/connectors/camel-disruptor-vm-kafka-connector/src/main/docs/camel-disruptor-vm-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-disruptor-vm-kafka-connector-source]]
+= camel-disruptor-vm-kafka-connector source configuration
+
+When using camel-disruptor-vm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor-vm source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use Disruptor for Publish-Subscribe messaging. That is, you can send a message to the queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitStrategy* | Defines the strategy used by consumer threads to wait on new exchanges to be published. The options allowed are:Blocking, Sleeping, BusySpin and Yielding. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor-vm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultConcurrent Consumers* | To configure the default number of concurrent consumers | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultMultiple Consumers* | To configure the default value for multiple consumers | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultWaitStrategy* | To configure the default value for DisruptorWaitStrategy The default value is Blocking. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dns-kafka-connector/pom.xml b/connectors/camel-dns-kafka-connector/pom.xml
index 2dcbccf..0261902 100644
--- a/connectors/camel-dns-kafka-connector/pom.xml
+++ b/connectors/camel-dns-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-dns-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: dns</name>
diff --git a/connectors/camel-dns-kafka-connector/src/main/assembly/package.xml b/connectors/camel-dns-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-dns-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-dns-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-dns-kafka-connector/src/main/docs/camel-dns-kafka-sink-connector.adoc b/connectors/camel-dns-kafka-connector/src/main/docs/camel-dns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..85ef17d
--- /dev/null
+++ b/connectors/camel-dns-kafka-connector/src/main/docs/camel-dns-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-dns-kafka-connector-sink]]
+= camel-dns-kafka-connector sink configuration
+
+When using camel-dns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dns sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.dnsType* | The type of the lookup. One of: [dig] [ip] [lookup] [wikipedia] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-docker-kafka-connector/pom.xml b/connectors/camel-docker-kafka-connector/pom.xml
index ee49296..6ea97ad 100644
--- a/connectors/camel-docker-kafka-connector/pom.xml
+++ b/connectors/camel-docker-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-docker-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: docker</name>
diff --git a/connectors/camel-docker-kafka-connector/src/main/assembly/package.xml b/connectors/camel-docker-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-docker-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-docker-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-docker-kafka-connector/src/main/docs/camel-docker-kafka-sink-connector.adoc b/connectors/camel-docker-kafka-connector/src/main/docs/camel-docker-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b41f89f
--- /dev/null
+++ b/connectors/camel-docker-kafka-connector/src/main/docs/camel-docker-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-docker-kafka-connector-sink]]
+= camel-docker-kafka-connector sink configuration
+
+When using camel-docker-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-docker-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-docker sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Which operation to use One of: [events] [stats] [auth] [info] [ping] [version] [imagebuild] [imagecreate] [imageinspect] [imagelist] [imagepull] [imagepushimageremove] [imagesearch] [imagetag] [containerattach] [containercommit] [containercopyfile] [containercreate] [containerdiffinspectcontainer] [containerkill] [containerlist] [containerlog] [containerpause] [containerrestart] [containerremove] [containerstartcontainerstop] [containertop] [containerunpause] [containerwait] [execcreate] [execstart] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.email* | Email address associated with the user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Docker host | "localhost" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.port* | Docker port | "2375" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Request timeout for response (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cmdExecFactory* | The fully qualified class name of the DockerCmdExecFactory implementation to use | "com.github.dockerjava.netty.NettyDockerCmdExecFactory" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirectFilter* | Whether to follow redirect filter | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingFilter* | Whether to use logging filter | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPerRouteConnections* | Maximum route connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | Maximum total connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Additional configuration parameters as key/value pairs | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverAddress* | Server address for docker registry. | "https://index.docker.io/v1/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socket* | Socket connection mode | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certPath* | Location containing the SSL certificate chain | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Use HTTPS communication | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tlsVerify* | Check TLS | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | User name to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.configuration* | To use the shared docker configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-docker-kafka-connector/src/main/docs/camel-docker-kafka-source-connector.adoc b/connectors/camel-docker-kafka-connector/src/main/docs/camel-docker-kafka-source-connector.adoc
new file mode 100644
index 0000000..e1ee5ea
--- /dev/null
+++ b/connectors/camel-docker-kafka-connector/src/main/docs/camel-docker-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-docker-kafka-connector-source]]
+= camel-docker-kafka-connector source configuration
+
+When using camel-docker-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-docker-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-docker source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.operation* | Which operation to use One of: [events] [stats] [auth] [info] [ping] [version] [imagebuild] [imagecreate] [imageinspect] [imagelist] [imagepull] [imagepushimageremove] [imagesearch] [imagetag] [containerattach] [containercommit] [containercopyfile] [containercreate] [containerdiffinspectcontainer] [containerkill] [containerlist] [containerlog] [containerpause] [containerrestart] [containerremove] [containerstartcontainerstop] [containertop] [containerunpause] [containerwait] [execcreate] [execstart] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.email* | Email address associated with the user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.host* | Docker host | "localhost" | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.port* | Docker port | "2375" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeout* | Request timeout for response (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cmdExecFactory* | The fully qualified class name of the DockerCmdExecFactory implementation to use | "com.github.dockerjava.netty.NettyDockerCmdExecFactory" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.followRedirectFilter* | Whether to follow redirect filter | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingFilter* | Whether to use logging filter | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPerRouteConnections* | Maximum route connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxTotalConnections* | Maximum total connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | Additional configuration parameters as key/value pairs | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverAddress* | Server address for docker registry. | "https://index.docker.io/v1/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socket* | Socket connection mode | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.certPath* | Location containing the SSL certificate chain | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Use HTTPS communication | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tlsVerify* | Check TLS | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | User name to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.configuration* | To use the shared docker configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dozer-kafka-connector/pom.xml b/connectors/camel-dozer-kafka-connector/pom.xml
index b6acaf6..78bea25 100644
--- a/connectors/camel-dozer-kafka-connector/pom.xml
+++ b/connectors/camel-dozer-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-dozer-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: dozer</name>
diff --git a/connectors/camel-dozer-kafka-connector/src/main/assembly/package.xml b/connectors/camel-dozer-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-dozer-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-dozer-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-dozer-kafka-connector/src/main/docs/camel-dozer-kafka-sink-connector.adoc b/connectors/camel-dozer-kafka-connector/src/main/docs/camel-dozer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..167cf11
--- /dev/null
+++ b/connectors/camel-dozer-kafka-connector/src/main/docs/camel-dozer-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-dozer-kafka-connector-sink]]
+= camel-dozer-kafka-connector sink configuration
+
+When using camel-dozer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dozer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dozer sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | A human readable name of the mapping. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingConfiguration* | The name of a DozerBeanMapperConfiguration bean in the Camel registry which should be used for configuring the Dozer mapping. This is an alternative to the mappingFile option that can be used for fine-grained control over how Dozer is configured. Remember to use a # prefix in the value to indicate that the bean is in the Camel registry (e.g. #myDozerConfig). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingFile* | The location of a Dozer configuration file. The file is loaded from the classpath by default, but you can use file:, classpath:, or http: to load the configuration from a specific location. | "dozerBeanMapping.xml" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marshalId* | The id of a dataFormat defined within the Camel Context to use for marshalling the mapping output to a non-Java type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceModel* | Fully-qualified class name for the source type used in the mapping. If specified, the input to the mapping is converted to the specified type before being mapped with Dozer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetModel* | Fully-qualified class name for the target type used in the mapping. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.unmarshalId* | The id of a dataFormat defined within the Camel Context to use for unmarshalling the mapping input from a non-Java type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dozer.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dozer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-drill-kafka-connector/pom.xml b/connectors/camel-drill-kafka-connector/pom.xml
index 0f31112..50d6cde 100644
--- a/connectors/camel-drill-kafka-connector/pom.xml
+++ b/connectors/camel-drill-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-drill-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: drill</name>
diff --git a/connectors/camel-drill-kafka-connector/src/main/assembly/package.xml b/connectors/camel-drill-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-drill-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-drill-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-drill-kafka-connector/src/main/docs/camel-drill-kafka-sink-connector.adoc b/connectors/camel-drill-kafka-connector/src/main/docs/camel-drill-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7f35ebd
--- /dev/null
+++ b/connectors/camel-drill-kafka-connector/src/main/docs/camel-drill-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-drill-kafka-connector-sink]]
+= camel-drill-kafka-connector sink configuration
+
+When using camel-drill-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-drill-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-drill sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Host name or IP address | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clusterId* | Cluster ID \https://drill.apache.org/docs/using-the-jdbc-driver/#determining-the-cluster-id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.directory* | Drill directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mode* | Connection mode: zk: Zookeeper drillbit: Drillbit direct connection \https://drill.apache.org/docs/using-the-jdbc-driver/ One of: [ZK] [DRILLBIT] | "ZK" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | Port number | "2181" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.drill.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.drill.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dropbox-kafka-connector/pom.xml b/connectors/camel-dropbox-kafka-connector/pom.xml
index 64d313c..e5d862a 100644
--- a/connectors/camel-dropbox-kafka-connector/pom.xml
+++ b/connectors/camel-dropbox-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-dropbox-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: dropbox</name>
diff --git a/connectors/camel-dropbox-kafka-connector/src/main/assembly/package.xml b/connectors/camel-dropbox-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-dropbox-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-dropbox-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-dropbox-kafka-connector/src/main/docs/camel-dropbox-kafka-sink-connector.adoc b/connectors/camel-dropbox-kafka-connector/src/main/docs/camel-dropbox-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a1a1398
--- /dev/null
+++ b/connectors/camel-dropbox-kafka-connector/src/main/docs/camel-dropbox-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-dropbox-kafka-connector-sink]]
+= camel-dropbox-kafka-connector sink configuration
+
+When using camel-dropbox-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dropbox-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dropbox sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | The specific action (typically is a CRUD action) to perform on Dropbox remote folder. One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | The access token to make API requests for a specific Dropbox user | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.client* | To use an existing DbxClient instance as DropBox client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientIdentifier* | Name of the app registered to make API requests | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.localPath* | Optional folder or file to upload on Dropbox from the local filesystem. If this option has not been configured then the message body is used as the content to upload. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.newRemotePath* | Destination file or folder | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files will be matched. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remotePath* | Original file or folder to move | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uploadMode* | Which mode to upload. in case of add the new file will be renamed if a file with the same name already exists on dropbox. in case of force if a file with the same name already exists on dropbox, this will be overwritten. One of: [add] [force] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-dropbox-kafka-connector/src/main/docs/camel-dropbox-kafka-source-connector.adoc b/connectors/camel-dropbox-kafka-connector/src/main/docs/camel-dropbox-kafka-source-connector.adoc
new file mode 100644
index 0000000..6c5e686
--- /dev/null
+++ b/connectors/camel-dropbox-kafka-connector/src/main/docs/camel-dropbox-kafka-source-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-dropbox-kafka-connector-source]]
+= camel-dropbox-kafka-connector source configuration
+
+When using camel-dropbox-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dropbox-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dropbox source connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.operation* | The specific action (typically is a CRUD action) to perform on Dropbox remote folder. One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | The access token to make API requests for a specific Dropbox user | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.client* | To use an existing DbxClient instance as DropBox client. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientIdentifier* | Name of the app registered to make API requests | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localPath* | Optional folder or file to upload on Dropbox from the local filesystem. If this option has not been configured then the message body is used as the content to upload. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.newRemotePath* | Destination file or folder | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files will be matched. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remotePath* | Original file or folder to move | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uploadMode* | Which mode to upload. in case of add the new file will be renamed if a file with the same name already exists on dropbox. in case of force if a file with the same name already exists on dropbox, this will be overwritten. One of: [add] [force] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ehcache-kafka-connector/pom.xml b/connectors/camel-ehcache-kafka-connector/pom.xml
index e9edfa0..a69056e 100644
--- a/connectors/camel-ehcache-kafka-connector/pom.xml
+++ b/connectors/camel-ehcache-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ehcache-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ehcache</name>
diff --git a/connectors/camel-ehcache-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ehcache-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ehcache-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ehcache-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ehcache-kafka-connector/src/main/docs/camel-ehcache-kafka-sink-connector.adoc b/connectors/camel-ehcache-kafka-connector/src/main/docs/camel-ehcache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5dcbed3
--- /dev/null
+++ b/connectors/camel-ehcache-kafka-connector/src/main/docs/camel-ehcache-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-ehcache-kafka-connector-sink]]
+= camel-ehcache-kafka-connector sink configuration
+
+When using camel-ehcache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ehcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ehcache sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | To configure the default cache action. If an action is set in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurations* | A map of cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfiguration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfigurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cachesConfigurations* | A map of caches configurations to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ehcache-kafka-connector/src/main/docs/camel-ehcache-kafka-source-connector.adoc b/connectors/camel-ehcache-kafka-connector/src/main/docs/camel-ehcache-kafka-source-connector.adoc
new file mode 100644
index 0000000..b5974c5
--- /dev/null
+++ b/connectors/camel-ehcache-kafka-connector/src/main/docs/camel-ehcache-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-ehcache-kafka-connector-source]]
+= camel-ehcache-kafka-connector source configuration
+
+When using camel-ehcache-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ehcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ehcache source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventFiring* | Set the delivery mode (synchronous, asynchronous) One of: [ASYNCHRONOUS] [SYNCHRONOUS] | "ASYNCHRONOUS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventOrdering* | Set the delivery mode (ordered, unordered) One of: [UNORDERED] [ORDERED] | "ORDERED" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventTypes* | Set the type of events to listen for (EVICTED,EXPIRED,REMOVED,CREATED,UPDATED). You can specify multiple entries separated by comma. One of: [EVICTED] [EXPIRED] [REMOVED] [CREATED] [UPDATED] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configuration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurations* | A map of cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfiguration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfigurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cachesConfigurations* | A map of caches configurations to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-elasticsearch-rest-kafka-connector/pom.xml b/connectors/camel-elasticsearch-rest-kafka-connector/pom.xml
index bc623bf..d032b58 100644
--- a/connectors/camel-elasticsearch-rest-kafka-connector/pom.xml
+++ b/connectors/camel-elasticsearch-rest-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-elasticsearch-rest-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: elasticsearch-rest</name>
diff --git a/connectors/camel-elasticsearch-rest-kafka-connector/src/main/assembly/package.xml b/connectors/camel-elasticsearch-rest-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-elasticsearch-rest-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-elasticsearch-rest-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-elasticsearch-rest-kafka-connector/src/main/docs/camel-elasticsearch-rest-kafka-sink-connector.adoc b/connectors/camel-elasticsearch-rest-kafka-connector/src/main/docs/camel-elasticsearch-rest-kafka-sink-connector.adoc
new file mode 100644
index 0000000..97914ef
--- /dev/null
+++ b/connectors/camel-elasticsearch-rest-kafka-connector/src/main/docs/camel-elasticsearch-rest-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-elasticsearch-rest-kafka-connector-sink]]
+= camel-elasticsearch-rest-kafka-connector sink configuration
+
+When using camel-elasticsearch-rest-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elasticsearch-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elasticsearch-rest sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.clusterName* | Name of the cluster | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | The time in ms to wait before connection will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Disconnect after it finish calling the producer | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableSniffer* | Enable automatically discover nodes from a running Elasticsearch cluster | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableSSL* | Enable SSL | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | Starting index of the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostAddresses* | Comma separated list with ip:port formatted remote transport addresses to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.indexName* | The name of the index to act against | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetryTimeout* | The time in ms before retry | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | What operation to perform One of: [Index] [Update] [Bulk] [BulkIndex] [GetById] [MultiGet] [MultiSearch] [Delete] [DeleteIndex] [Search] [Exists] [Ping] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scrollKeepAliveMs* | Time in ms during which elasticsearch will keep search context alive | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.size* | Size of the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sniffAfterFailureDelay* | The delay of a sniff execution scheduled after a failure (in milliseconds) | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snifferInterval* | The interval between consecutive ordinary sniff executions in milliseconds. Will be honoured when sniffOnFailure is disabled or when there are no failures between consecutive sniff executions | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | The timeout in ms to wait before the socket will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useScroll* | Enable scroll usage | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForActiveShards* | Index creation waits for the write consistency number of shards to be available | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.client* | To use an existing configured Elasticsearch client, instead of creating a client per endpoint. This allow to customize the client with specific settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.connection Timeout* | The time in ms to wait before connection will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.enableSniffer* | Enable automatically discover nodes from a running Elasticsearch cluster | "false" | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.hostAddresses* | Comma separated list with ip:port formatted remote transport addresses to use. The ip and port options must be left blank for hostAddresses to be considered instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.maxRetryTimeout* | The time in ms before retry | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.sniffAfter FailureDelay* | The delay of a sniff execution scheduled after a failure (in milliseconds) | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.snifferInterval* | The interval between consecutive ordinary sniff executions in milliseconds. Will be honoured when sniffOnFailure is disabled or when there are no failures between consecutive sniff executions | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.socketTimeout* | The timeout in ms to wait before the socket will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.enableSSL* | Enable SSL | "false" | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.password* | Password for authenticate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.user* | Basic authenticate user | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-elsql-kafka-connector/pom.xml b/connectors/camel-elsql-kafka-connector/pom.xml
index 3f72741..093f00b 100644
--- a/connectors/camel-elsql-kafka-connector/pom.xml
+++ b/connectors/camel-elsql-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-elsql-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: elsql</name>
diff --git a/connectors/camel-elsql-kafka-connector/src/main/assembly/package.xml b/connectors/camel-elsql-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-elsql-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-elsql-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-elsql-kafka-connector/src/main/docs/camel-elsql-kafka-sink-connector.adoc b/connectors/camel-elsql-kafka-connector/src/main/docs/camel-elsql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e486179
--- /dev/null
+++ b/connectors/camel-elsql-kafka-connector/src/main/docs/camel-elsql-kafka-sink-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-elsql-kafka-connector-sink]]
+= camel-elsql-kafka-connector sink configuration
+
+When using camel-elsql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elsql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elsql sink connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.elsqlName* | The name of the elsql to use (is NAMED in the elsql file) | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batch* | Enables or disables batch mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noop* | If set, will ignore the results of the SQL query and use the existing IN message as the OUT message for the continuation of processing | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageBodyForSql* | Whether to use the message body as the SQL and then headers for parameters. If this option is enabled then the SQL in the uri is not used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-elsql-kafka-connector/src/main/docs/camel-elsql-kafka-source-connector.adoc b/connectors/camel-elsql-kafka-connector/src/main/docs/camel-elsql-kafka-source-connector.adoc
new file mode 100644
index 0000000..b595751
--- /dev/null
+++ b/connectors/camel-elsql-kafka-connector/src/main/docs/camel-elsql-kafka-source-connector.adoc
@@ -0,0 +1,80 @@
+// kafka-connector options: START
+[[camel-elsql-kafka-connector-source]]
+= camel-elsql-kafka-connector source configuration
+
+When using camel-elsql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elsql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elsql source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.elsqlName* | The name of the elsql to use (is NAMED in the elsql file) | null | ConfigDef.Importance.HIGH
+| *camel.source.path.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.breakBatchOnConsumeFail* | Sets whether to break batch if onConsume failed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expectedUpdateCount* | Sets an expected update count to validate when using onConsume. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Sets the maximum number of messages to poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsume* | After processing each row then this query can be executed, if the Exchange was processed successfully, for example to mark the row as processed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeBatchComplete* | After processing the entire batch, this query can be executed to bulk update rows etc. The query cannot have parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeFailed* | After processing each row then this query can be executed, if the Exchange failed, for example to mark the row as failed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeEmptyResultSet* | Sets whether empty resultset should be allowed to be sent to the next hop. Defaults to false. So the empty resultset will be filtered out. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Enables or disables transaction. If enabled then if processing an exchange failed then the consumer breaks out processing any further exchanges to cause a rollback eager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIterator* | Sets how resultset should be delivered to route. Indicates delivery as either a list or individual object. defaults to true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processingStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlProcessingStrategy to execute queries when the consumer has processed the rows/batch. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-elytron-kafka-connector/pom.xml b/connectors/camel-elytron-kafka-connector/pom.xml
index 59707e8..2dd2fbe 100644
--- a/connectors/camel-elytron-kafka-connector/pom.xml
+++ b/connectors/camel-elytron-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-elytron-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: elytron</name>
diff --git a/connectors/camel-elytron-kafka-connector/src/main/assembly/package.xml b/connectors/camel-elytron-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-elytron-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-elytron-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-elytron-kafka-connector/src/main/docs/camel-elytron-kafka-sink-connector.adoc b/connectors/camel-elytron-kafka-connector/src/main/docs/camel-elytron-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8724037
--- /dev/null
+++ b/connectors/camel-elytron-kafka-connector/src/main/docs/camel-elytron-kafka-sink-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-elytron-kafka-connector-sink]]
+= camel-elytron-kafka-connector sink configuration
+
+When using camel-elytron-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elytron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elytron sink connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowedRoles* | Comma separated list of allowed roles. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Sets additional channel options. The options that can be used are defined in org.xnio.Options. To configure from endpoint uri, then prefix each option with option., such as option.close-abort=true&option.send-buffer=8192 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, UndertowProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddresses* | Setting to facilitate socket multiplexing | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeout* | Timeout in milliseconds when sending to a websocket channel. The default timeout is 30000 (30 seconds). | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | To send to all websocket subscribers. Can be used to configure on endpoint level, instead of having to use the UndertowConstants.SEND_TO_ALL header on the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.elytronProvider* | Elytron security provider, has to support mechanism from parameter mechanismName. | "instance of WildFlyElytronHttpBearerProvider" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.mechanismName* | Name of the mechanism, which will be used for selection of authentication mechanism. | "BEARER_TOKEN" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.securityDomainBuilder* | Definition of Builder, which will be used for creation of security domain. | null | ConfigDef.Importance.HIGH
+| *camel.component.elytron.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-elytron-kafka-connector/src/main/docs/camel-elytron-kafka-source-connector.adoc b/connectors/camel-elytron-kafka-connector/src/main/docs/camel-elytron-kafka-source-connector.adoc
new file mode 100644
index 0000000..e3bd9b8
--- /dev/null
+++ b/connectors/camel-elytron-kafka-connector/src/main/docs/camel-elytron-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-elytron-kafka-connector-source]]
+= camel-elytron-kafka-connector source configuration
+
+When using camel-elytron-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elytron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elytron source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowedRoles* | Comma separated list of allowed roles. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLog* | Whether or not the consumer should write access log | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handlers* | Specifies a comma-delimited set of io.undertow.server.HttpHandler instances to lookup in your Registry. These handlers are added to the Undertow handler chain (for example, to add security). Important: You can not use different handlers with different Undertow endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireWebSocketChannelEvents* | if true, the consumer will post notifications to the route when a new WebSocket peer connects, disconnects, etc. See UndertowConstants.EVENT_TYPE and EventType. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.elytronProvider* | Elytron security provider, has to support mechanism from parameter mechanismName. | "instance of WildFlyElytronHttpBearerProvider" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.mechanismName* | Name of the mechanism, which will be used for selection of authentication mechanism. | "BEARER_TOKEN" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.securityDomainBuilder* | Definition of Builder, which will be used for creation of security domain. | null | ConfigDef.Importance.HIGH
+| *camel.component.elytron.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-etcd-keys-kafka-connector/pom.xml b/connectors/camel-etcd-keys-kafka-connector/pom.xml
index c567181..62d0f98 100644
--- a/connectors/camel-etcd-keys-kafka-connector/pom.xml
+++ b/connectors/camel-etcd-keys-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-etcd-keys-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: etcd-keys</name>
diff --git a/connectors/camel-etcd-keys-kafka-connector/src/main/assembly/package.xml b/connectors/camel-etcd-keys-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-etcd-keys-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-etcd-keys-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-etcd-keys-kafka-connector/src/main/docs/camel-etcd-keys-kafka-sink-connector.adoc b/connectors/camel-etcd-keys-kafka-connector/src/main/docs/camel-etcd-keys-kafka-sink-connector.adoc
new file mode 100644
index 0000000..504ce17
--- /dev/null
+++ b/connectors/camel-etcd-keys-kafka-connector/src/main/docs/camel-etcd-keys-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-etcd-keys-kafka-connector-sink]]
+= camel-etcd-keys-kafka-connector sink configuration
+
+When using camel-etcd-keys-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-keys-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-keys sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | To set the lifespan of a key in milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-etcd-stats-kafka-connector/pom.xml b/connectors/camel-etcd-stats-kafka-connector/pom.xml
index 1ce48b1..5c8af19 100644
--- a/connectors/camel-etcd-stats-kafka-connector/pom.xml
+++ b/connectors/camel-etcd-stats-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-etcd-stats-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: etcd-stats</name>
diff --git a/connectors/camel-etcd-stats-kafka-connector/src/main/assembly/package.xml b/connectors/camel-etcd-stats-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-etcd-stats-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-etcd-stats-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-etcd-stats-kafka-connector/src/main/docs/camel-etcd-stats-kafka-sink-connector.adoc b/connectors/camel-etcd-stats-kafka-connector/src/main/docs/camel-etcd-stats-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c7bee94
--- /dev/null
+++ b/connectors/camel-etcd-stats-kafka-connector/src/main/docs/camel-etcd-stats-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-etcd-stats-kafka-connector-sink]]
+= camel-etcd-stats-kafka-connector sink configuration
+
+When using camel-etcd-stats-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-stats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-stats sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | To set the lifespan of a key in milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-etcd-stats-kafka-connector/src/main/docs/camel-etcd-stats-kafka-source-connector.adoc b/connectors/camel-etcd-stats-kafka-connector/src/main/docs/camel-etcd-stats-kafka-source-connector.adoc
new file mode 100644
index 0000000..de914fd
--- /dev/null
+++ b/connectors/camel-etcd-stats-kafka-connector/src/main/docs/camel-etcd-stats-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-etcd-stats-kafka-connector-source]]
+= camel-etcd-stats-kafka-connector source configuration
+
+When using camel-etcd-stats-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-stats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-stats source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyExchangeOnTimeout* | To send an empty message in case of timeout watching for a key. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromIndex* | The index to watch from | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-etcd-watch-kafka-connector/pom.xml b/connectors/camel-etcd-watch-kafka-connector/pom.xml
index ba4e642..9a4de58 100644
--- a/connectors/camel-etcd-watch-kafka-connector/pom.xml
+++ b/connectors/camel-etcd-watch-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-etcd-watch-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: etcd-watch</name>
diff --git a/connectors/camel-etcd-watch-kafka-connector/src/main/assembly/package.xml b/connectors/camel-etcd-watch-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-etcd-watch-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-etcd-watch-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-etcd-watch-kafka-connector/src/main/docs/camel-etcd-watch-kafka-source-connector.adoc b/connectors/camel-etcd-watch-kafka-connector/src/main/docs/camel-etcd-watch-kafka-source-connector.adoc
new file mode 100644
index 0000000..20b786b
--- /dev/null
+++ b/connectors/camel-etcd-watch-kafka-connector/src/main/docs/camel-etcd-watch-kafka-source-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-etcd-watch-kafka-connector-source]]
+= camel-etcd-watch-kafka-connector source configuration
+
+When using camel-etcd-watch-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-watch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-watch source connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyExchangeOnTimeout* | To send an empty message in case of timeout watching for a key. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromIndex* | The index to watch from | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-eventadmin-kafka-connector/pom.xml b/connectors/camel-eventadmin-kafka-connector/pom.xml
index 3b105d1..5155d86 100644
--- a/connectors/camel-eventadmin-kafka-connector/pom.xml
+++ b/connectors/camel-eventadmin-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-eventadmin-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: eventadmin</name>
diff --git a/connectors/camel-eventadmin-kafka-connector/src/main/assembly/package.xml b/connectors/camel-eventadmin-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-eventadmin-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-eventadmin-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-eventadmin-kafka-connector/src/main/docs/camel-eventadmin-kafka-sink-connector.adoc b/connectors/camel-eventadmin-kafka-connector/src/main/docs/camel-eventadmin-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c3893cc
--- /dev/null
+++ b/connectors/camel-eventadmin-kafka-connector/src/main/docs/camel-eventadmin-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-eventadmin-kafka-connector-sink]]
+= camel-eventadmin-kafka-connector sink configuration
+
+When using camel-eventadmin-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-eventadmin-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-eventadmin sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | Name of topic to listen or send to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.send* | Whether to use 'send' or 'synchronous' deliver. Default false (async delivery) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.bundleContext* | The OSGi BundleContext is automatic injected by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-eventadmin-kafka-connector/src/main/docs/camel-eventadmin-kafka-source-connector.adoc b/connectors/camel-eventadmin-kafka-connector/src/main/docs/camel-eventadmin-kafka-source-connector.adoc
new file mode 100644
index 0000000..2db389a
--- /dev/null
+++ b/connectors/camel-eventadmin-kafka-connector/src/main/docs/camel-eventadmin-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-eventadmin-kafka-connector-source]]
+= camel-eventadmin-kafka-connector source configuration
+
+When using camel-eventadmin-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-eventadmin-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-eventadmin source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | Name of topic to listen or send to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.send* | Whether to use 'send' or 'synchronous' deliver. Default false (async delivery) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.bundleContext* | The OSGi BundleContext is automatic injected by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-exec-kafka-connector/pom.xml b/connectors/camel-exec-kafka-connector/pom.xml
index a396280..d0a667c 100644
--- a/connectors/camel-exec-kafka-connector/pom.xml
+++ b/connectors/camel-exec-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-exec-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: exec</name>
diff --git a/connectors/camel-exec-kafka-connector/src/main/assembly/package.xml b/connectors/camel-exec-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-exec-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-exec-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-exec-kafka-connector/src/main/docs/camel-exec-kafka-sink-connector.adoc b/connectors/camel-exec-kafka-connector/src/main/docs/camel-exec-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86af811
--- /dev/null
+++ b/connectors/camel-exec-kafka-connector/src/main/docs/camel-exec-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-exec-kafka-connector-sink]]
+= camel-exec-kafka-connector sink configuration
+
+When using camel-exec-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-exec-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-exec sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.executable* | Sets the executable to be executed. The executable must not be empty or null. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.args* | The arguments may be one or many whitespace-separated tokens. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | A reference to a org.apache.commons.exec.ExecBinding in the Registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commandExecutor* | A reference to a org.apache.commons.exec.ExecCommandExecutor in the Registry that customizes the command execution. The default command executor utilizes the commons-exec library, which adds a shutdown hook for every executed command. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commandLogLevel* | Logging level to be used for commands during execution. The default value is DEBUG. Possible values are TRACE, DEBUG, INFO, WARN, ERROR or OFF. (Values of ExecCommandLogLevelType enum) One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outFile* | The name of a file, created by the executable, that should be considered as its output. If no outFile is set, the standard output (stdout) of the executable will be used instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout, in milliseconds, after which the executable should be terminated. If execution has not completed within the timeout, the component will send a termination request. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStderrOnEmptyStdout* | A boolean indicating that when stdout is empty, this component will populate the Camel Message Body with stderr. This behavior is disabled (false) by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workingDir* | The directory in which the command should be executed. If null, the working directory of the current process will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.exec.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.exec.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-facebook-kafka-connector/pom.xml b/connectors/camel-facebook-kafka-connector/pom.xml
index 860f3fe..82bbc32 100644
--- a/connectors/camel-facebook-kafka-connector/pom.xml
+++ b/connectors/camel-facebook-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-facebook-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: facebook</name>
diff --git a/connectors/camel-facebook-kafka-connector/src/main/assembly/package.xml b/connectors/camel-facebook-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-facebook-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-facebook-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-facebook-kafka-connector/src/main/docs/camel-facebook-kafka-sink-connector.adoc b/connectors/camel-facebook-kafka-connector/src/main/docs/camel-facebook-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5bcb78c
--- /dev/null
+++ b/connectors/camel-facebook-kafka-connector/src/main/docs/camel-facebook-kafka-sink-connector.adoc
@@ -0,0 +1,131 @@
+// kafka-connector options: START
+[[camel-facebook-kafka-connector-sink]]
+= camel-facebook-kafka-connector sink configuration
+
+When using camel-facebook-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-facebook-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-facebook sink connector supports 105 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.methodName* | What operation to perform | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.achievementURL* | The unique URL of the achievement | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.albumId* | The album ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.albumUpdate* | The facebook Album to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.appId* | The ID of the Facebook Application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.center* | Location latitude and longitude | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.checkinId* | The checkin ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.checkinUpdate* | The checkin to be created. Deprecated, instead create a Post with an attached location | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.clientURL* | Facebook4J API client URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientVersion* | Facebook4J client API version | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commentId* | The comment ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commentUpdate* | The facebook Comment to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugEnabled* | Enables deubg output. Effective only with the embedded logger | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.description* | The description text | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.distance* | Distance in meters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainId* | The domain ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainName* | The domain name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainNames* | The domain names | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventId* | The event ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventUpdate* | The event to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendId* | The friend ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendlistId* | The friend list ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendlistName* | The friend list Name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendUserId* | The friend user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupId* | The group ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gzipEnabled* | Use Facebook GZIP encoding | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpConnectionTimeout* | Http connection timeout in milliseconds | "20000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpDefaultMaxPerRoute* | HTTP maximum connections per route | "2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMaxTotalConnections* | HTTP maximum total connections | "20" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpReadTimeout* | Http read timeout in milliseconds | "120000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpRetryCount* | Number of HTTP retries | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpRetryIntervalSeconds* | HTTP retry interval in seconds | "5" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpStreamingReadTimeout* | HTTP streaming read timeout in milliseconds | "40000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ids* | The ids of users | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeRead* | Enables notifications that the user has already read in addition to unread ones | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.isHidden* | Whether hidden | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonStoreEnabled* | If set to true, raw JSON forms will be stored in DataObjectFactory | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.link* | Link URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.linkId* | Link ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.locale* | Desired FQL locale | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mbeanEnabled* | If set to true, Facebook4J mbean will be registerd | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.message* | The message text | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageId* | The message ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metric* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.milestoneId* | The milestone id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | Test user name, must be of the form 'first last' | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noteId* | The note ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notificationId* | The notification ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.objectId* | The insight object ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerId* | The offer id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.optionDescription* | The question's answer option description | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageId* | The page id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.permissionName* | The permission name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.permissions* | Test user permissions in the format perm1,perm2,... | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.photoId* | The photo ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pictureId* | The picture id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pictureId2* | The picture2 id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pictureSize* | The picture size One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.placeId* | The place ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.postId* | The post ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.postUpdate* | The post to create or update | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prettyDebugEnabled* | Prettify JSON debug output if set to true | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queries* | FQL queries | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | FQL query or search terms for search endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.questionId* | The question id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reading* | Optional reading parameters. See Reading Options(#reading) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readingOptions* | To configure Reading using key/value pairs from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.restBaseURL* | API base URL | "https://graph.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scoreValue* | The numeric score with value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.size* | The picture size, one of large, normal, small or square One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.source* | The media content from either a java.io.File or java.io.Inputstream | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The note of the subject | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tabId* | The tab id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagUpdate* | Photo tag information | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testUser1* | Test user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testUser2* | Test user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testUserId* | The ID of the test user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.title* | The title text | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUserId* | The ID of the user to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUserIds* | The IDs of the users to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId* | The Facebook user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId1* | The ID of a user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId2* | The ID of a user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userIds* | The IDs of users to invite to event | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userLocale* | The test user locale | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSSL* | Use SSL | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.videoBaseURL* | Video API base URL | "https://graph-video.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.videoId* | The video ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | HTTP proxy server host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | HTTP proxy server password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | HTTP proxy server port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | HTTP proxy server user name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAccessToken* | The user access token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAccessTokenURL* | OAuth access token URL | "https://graph.facebook.com/oauth/access_token" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAppId* | The application Id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAppSecret* | The application Secret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAuthorizationURL* | OAuth authorization URL | "https://www.facebook.com/dialog/oauth" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthPermissions* | Default OAuth permissions. Comma separated permission names. See \https://developers.facebook.com/docs/reference/login/#permissions for the detail | null | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-facebook-kafka-connector/src/main/docs/camel-facebook-kafka-source-connector.adoc b/connectors/camel-facebook-kafka-connector/src/main/docs/camel-facebook-kafka-source-connector.adoc
new file mode 100644
index 0000000..68514da
--- /dev/null
+++ b/connectors/camel-facebook-kafka-connector/src/main/docs/camel-facebook-kafka-source-connector.adoc
@@ -0,0 +1,133 @@
+// kafka-connector options: START
+[[camel-facebook-kafka-connector-source]]
+= camel-facebook-kafka-connector source configuration
+
+When using camel-facebook-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-facebook-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-facebook source connector supports 107 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.methodName* | What operation to perform | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.achievementURL* | The unique URL of the achievement | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.albumId* | The album ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.albumUpdate* | The facebook Album to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.appId* | The ID of the Facebook Application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.center* | Location latitude and longitude | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkinId* | The checkin ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkinUpdate* | The checkin to be created. Deprecated, instead create a Post with an attached location | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.clientURL* | Facebook4J API client URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientVersion* | Facebook4J client API version | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.commentId* | The comment ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.commentUpdate* | The facebook Comment to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugEnabled* | Enables deubg output. Effective only with the embedded logger | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.description* | The description text | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distance* | Distance in meters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainId* | The domain ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainName* | The domain name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainNames* | The domain names | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventId* | The event ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventUpdate* | The event to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendId* | The friend ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendlistId* | The friend list ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendlistName* | The friend list Name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendUserId* | The friend user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupId* | The group ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gzipEnabled* | Use Facebook GZIP encoding | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpConnectionTimeout* | Http connection timeout in milliseconds | "20000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpDefaultMaxPerRoute* | HTTP maximum connections per route | "2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMaxTotalConnections* | HTTP maximum total connections | "20" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpReadTimeout* | Http read timeout in milliseconds | "120000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpRetryCount* | Number of HTTP retries | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpRetryIntervalSeconds* | HTTP retry interval in seconds | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpStreamingReadTimeout* | HTTP streaming read timeout in milliseconds | "40000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ids* | The ids of users | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeRead* | Enables notifications that the user has already read in addition to unread ones | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.isHidden* | Whether hidden | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jsonStoreEnabled* | If set to true, raw JSON forms will be stored in DataObjectFactory | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.link* | Link URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.linkId* | Link ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locale* | Desired FQL locale | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mbeanEnabled* | If set to true, Facebook4J mbean will be registerd | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.message* | The message text | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageId* | The message ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.metric* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.milestoneId* | The milestone id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.name* | Test user name, must be of the form 'first last' | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noteId* | The note ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notificationId* | The notification ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectId* | The insight object ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offerId* | The offer id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionDescription* | The question's answer option description | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageId* | The page id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.permissionName* | The permission name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.permissions* | Test user permissions in the format perm1,perm2,... | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.photoId* | The photo ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pictureId* | The picture id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pictureId2* | The picture2 id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pictureSize* | The picture size One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.placeId* | The place ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postId* | The post ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postUpdate* | The post to create or update | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prettyDebugEnabled* | Prettify JSON debug output if set to true | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queries* | FQL queries | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | FQL query or search terms for search endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.questionId* | The question id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reading* | Optional reading parameters. See Reading Options(#reading) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readingOptions* | To configure Reading using key/value pairs from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.restBaseURL* | API base URL | "https://graph.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scoreValue* | The numeric score with value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.size* | The picture size, one of large, normal, small or square One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.source* | The media content from either a java.io.File or java.io.Inputstream | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subject* | The note of the subject | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tabId* | The tab id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagUpdate* | Photo tag information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testUser1* | Test user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testUser2* | Test user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testUserId* | The ID of the test user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.title* | The title text | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUserId* | The ID of the user to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUserIds* | The IDs of the users to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | The Facebook user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId1* | The ID of a user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId2* | The ID of a user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | The IDs of users to invite to event | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userLocale* | The test user locale | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useSSL* | Use SSL | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.videoBaseURL* | Video API base URL | "https://graph-video.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.videoId* | The video ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | HTTP proxy server host name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | HTTP proxy server password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | HTTP proxy server port | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | HTTP proxy server user name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAccessToken* | The user access token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAccessTokenURL* | OAuth access token URL | "https://graph.facebook.com/oauth/access_token" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAppId* | The application Id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAppSecret* | The application Secret | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAuthorizationURL* | OAuth authorization URL | "https://www.facebook.com/dialog/oauth" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthPermissions* | Default OAuth permissions. Comma separated permission names. See \https://developers.facebook.com/docs/reference/login/#permissions for the detail | null | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-fhir-kafka-connector/pom.xml b/connectors/camel-fhir-kafka-connector/pom.xml
index eaef2d4..a0f2419 100644
--- a/connectors/camel-fhir-kafka-connector/pom.xml
+++ b/connectors/camel-fhir-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-fhir-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: fhir</name>
diff --git a/connectors/camel-fhir-kafka-connector/src/main/assembly/package.xml b/connectors/camel-fhir-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-fhir-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-fhir-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-fhir-kafka-connector/src/main/docs/camel-fhir-kafka-sink-connector.adoc b/connectors/camel-fhir-kafka-connector/src/main/docs/camel-fhir-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f89595e
--- /dev/null
+++ b/connectors/camel-fhir-kafka-connector/src/main/docs/camel-fhir-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-fhir-kafka-connector-sink]]
+= camel-fhir-kafka-connector sink configuration
+
+When using camel-fhir-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-fhir-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-fhir sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [capabilities] [create] [delete] [history] [load-page] [meta] [patch] [read] [search] [transaction] [update] [validate] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.encoding* | Encoding to use for all request One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fhirVersion* | The FHIR Version to use One of: [DSTU2] [DSTU2_HL7ORG] [DSTU2_1] [DSTU3] [R4] [R5] | "R4" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.log* | Will log every requests and responses | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prettyPrint* | Pretty print all request | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverUrl* | The FHIR server base URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.client* | To use the custom client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientFactory* | To use the custom client factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compress* | Compresses outgoing (POST/PUT) contents to the GZIP format | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | How long to try and establish the initial TCP connection (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deferModelScanning* | When this option is set, model classes will not be scanned for children until the child list for the given type is actually accessed. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fhirContext* | FhirContext is an expensive object to create. To avoid creating multiple instances, it can be set directly. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceConformanceCheck* | Force conformance check | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionCookie* | HTTP session cookie to add to every request | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | How long to block for individual read/write operations (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.summary* | Request that the server modify the response using the _summary param One of: [COUNT] [TEXT] [DATA] [TRUE] [FALSE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validationMode* | When should Camel validate the FHIR Server's conformance statement One of: [NEVER] [ONCE] | "ONCE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPassword* | The proxy password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyUser* | The proxy username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | OAuth access token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-fhir-kafka-connector/src/main/docs/camel-fhir-kafka-source-connector.adoc b/connectors/camel-fhir-kafka-connector/src/main/docs/camel-fhir-kafka-source-connector.adoc
new file mode 100644
index 0000000..f5b1010
--- /dev/null
+++ b/connectors/camel-fhir-kafka-connector/src/main/docs/camel-fhir-kafka-source-connector.adoc
@@ -0,0 +1,76 @@
+// kafka-connector options: START
+[[camel-fhir-kafka-connector-source]]
+= camel-fhir-kafka-connector source configuration
+
+When using camel-fhir-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-fhir-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-fhir source connector supports 50 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [capabilities] [create] [delete] [history] [load-page] [meta] [patch] [read] [search] [transaction] [update] [validate] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.encoding* | Encoding to use for all request One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fhirVersion* | The FHIR Version to use One of: [DSTU2] [DSTU2_HL7ORG] [DSTU2_1] [DSTU3] [R4] [R5] | "R4" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.log* | Will log every requests and responses | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prettyPrint* | Pretty print all request | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverUrl* | The FHIR server base URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.client* | To use the custom client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientFactory* | To use the custom client factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compress* | Compresses outgoing (POST/PUT) contents to the GZIP format | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | How long to try and establish the initial TCP connection (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deferModelScanning* | When this option is set, model classes will not be scanned for children until the child list for the given type is actually accessed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fhirContext* | FhirContext is an expensive object to create. To avoid creating multiple instances, it can be set directly. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forceConformanceCheck* | Force conformance check | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionCookie* | HTTP session cookie to add to every request | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketTimeout* | How long to block for individual read/write operations (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.summary* | Request that the server modify the response using the _summary param One of: [COUNT] [TEXT] [DATA] [TRUE] [FALSE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.validationMode* | When should Camel validate the FHIR Server's conformance statement One of: [NEVER] [ONCE] | "ONCE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPassword* | The proxy password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyUser* | The proxy username | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth access token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-file-kafka-connector/pom.xml b/connectors/camel-file-kafka-connector/pom.xml
index 13b65bc..c10b9d5 100644
--- a/connectors/camel-file-kafka-connector/pom.xml
+++ b/connectors/camel-file-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-file-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: file</name>
diff --git a/connectors/camel-file-kafka-connector/src/main/assembly/package.xml b/connectors/camel-file-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-file-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-file-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-file-kafka-connector/src/main/docs/camel-file-kafka-sink-connector.adoc b/connectors/camel-file-kafka-connector/src/main/docs/camel-file-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a9d710f
--- /dev/null
+++ b/connectors/camel-file-kafka-connector/src/main/docs/camel-file-kafka-sink-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-file-kafka-connector-sink]]
+= camel-file-kafka-connector sink configuration
+
+When using camel-file-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-file-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-file sink connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.appendChars* | Used to append characters (text) after writing files. This can for example be used to add new lines or other separators when writing and appending to existing files. To specify new-line (slash-n or slash-r) or tab (slash-t) characters then escape with an extra slash, eg slash-slash-n. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Specify the file permissions which is sent by the producer, the chmod value must be between 000 and 777; If there is a leading digit like in 0755 we will ignore it. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmodDirectory* | Specify the directory permissions used when the producer creates missing directories, the chmod value must be between 000 and 777; If there is a leading digit like in 0755 we will ignore it. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceWrites* | Whether to force syncing writes to the file system. You can turn this off if you do not want this level of guarantee, for example if writing to logs / audit logs etc; this would yield better performance. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyAndDeleteOnRenameFail* | Whether to fallback and do a copy and delete file, in case the file could not be renamed directly. This option is not available for the FTP component. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.renameUsingCopy* | Perform rename operations using a copy and delete strategy. This is primarily used in environments where the regular rename operation is unreliable (e.g. across different file systems or networks). This option takes precedence over the copyAndDeleteOnRenameFail parameter that will automatically fall back to the copy and delete strategy, but only after additional delays. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-file-kafka-connector/src/main/docs/camel-file-kafka-source-connector.adoc b/connectors/camel-file-kafka-connector/src/main/docs/camel-file-kafka-source-connector.adoc
new file mode 100644
index 0000000..4dff40c
--- /dev/null
+++ b/connectors/camel-file-kafka-connector/src/main/docs/camel-file-kafka-source-connector.adoc
@@ -0,0 +1,106 @@
+// kafka-connector options: START
+[[camel-file-kafka-connector-source]]
+= camel-file-kafka-connector source configuration
+
+When using camel-file-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-file-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-file source connector supports 80 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.directoryMustExist* | Similar to the startingDirectoryMustExist option but this applies during polling (after starting the consumer). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedAttributes* | To define which file attributes of interest. Like posix:permissions,posix:owner,basic:lastAccessTime, it supports basic wildcard like posix:, basic:lastAccessTime | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.probeContentType* | Whether to enable probing of the content type. If enable then the consumer uses Files#probeContentType(java.nio.file.Path) to determine the content-type of the file, and store that as a header with key Exchange#FILE_CONTENT_TYPE on the Message. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startingDirectoryMustExist* | Whether the starting directory must exist. Mind that the autoCreate option is default enabled, which means the starting directory is normally auto created if it doesn't exist. You can disable autoCreate and enable this to ensure the starting directory must exist. Will thrown an exception if the directory doesn't exist. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startingDirectoryMustHave Access* | Whether the starting directory has access permissions. Mind that the startingDirectoryMustExist parameter must be set to true in order to verify that the directory exists. Will thrown an exception if the directory doesn't have read and write permissions. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyAndDeleteOnRenameFail* | Whether to fallback and do a copy and delete file, in case the file could not be renamed directly. This option is not available for the FTP component. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.renameUsingCopy* | Perform rename operations using a copy and delete strategy. This is primarily used in environments where the regular rename operation is unreliable (e.g. across different file systems or networks). This option takes precedence over the copyAndDeleteOnRenameFail parameter that will automatically fall back to the copy and delete strategy, but only after additional delays. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Async* | Whether the delayed release task should be synchronous or asynchronous. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease AsyncPoolSize* | The number of threads in the scheduled thread pool when using asynchronous release tasks. Using a default of 1 core threads should be sufficient in almost all use-cases, only set this to a higher value if either updating the idempotent repository is slow, or there are a lot of files to process. This option is not in-use if you use a shared thread pool by configuring the readLockIdempotentReleaseExecutorService option. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Delay* | Whether to delay the release task for a period of millis. This can be used to delay the release tasks to expand the window when a file is regarded as read-locked, in an active/active cluster scenario with a shared idempotent repository, to ensure other nodes cannot potentially scan and acquire the same file, due to race-conditions. By expanding the time-window of the release tasks helps prevents these situations. Note delaying is only needed if you have configured readLockRemoveOnCommit to true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease ExecutorService* | To use a custom and shared thread pool for asynchronous release tasks. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.file.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-file-watch-kafka-connector/pom.xml b/connectors/camel-file-watch-kafka-connector/pom.xml
index d2ec2c0..e2242ff 100644
--- a/connectors/camel-file-watch-kafka-connector/pom.xml
+++ b/connectors/camel-file-watch-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-file-watch-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: file-watch</name>
diff --git a/connectors/camel-file-watch-kafka-connector/src/main/assembly/package.xml b/connectors/camel-file-watch-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-file-watch-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-file-watch-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-file-watch-kafka-connector/src/main/docs/camel-file-watch-kafka-source-connector.adoc b/connectors/camel-file-watch-kafka-connector/src/main/docs/camel-file-watch-kafka-source-connector.adoc
new file mode 100644
index 0000000..8798eb3
--- /dev/null
+++ b/connectors/camel-file-watch-kafka-connector/src/main/docs/camel-file-watch-kafka-source-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-file-watch-kafka-connector-source]]
+= camel-file-watch-kafka-connector source configuration
+
+When using camel-file-watch-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-file-watch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-file-watch source connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | Path of directory to consume events from. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.antInclude* | ANT style pattern to match files. The file is matched against path relative to endpoint path. Pattern must be also relative (not starting with slash) | "**" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Auto create directory if does not exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | The number of concurrent consumers. Increase this value, if your route is slow to prevent buffering in queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.events* | Comma separated list of events to watch. One of: [CREATE] [MODIFY] [DELETE] | "CREATE,MODIFY,DELETE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileHasher* | Reference to io.methvin.watcher.hashing.FileHasher. This prevents emitting duplicate events on some platforms. For working with large files and if you dont need detect multiple modifications per second per file, use #lastModifiedTimeFileHasher. You can also provide custom implementation in registry. | "#murmur3FFileHasher" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollThreads* | The number of threads polling WatchService. Increase this value, if you see OVERFLOW messages in log. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueSize* | Maximum size of queue between WatchService and consumer. Unbounded by default. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | Watch recursive in current and child directories (including newly created directories). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFileHashing* | Enables or disables file hashing to detect duplicate events. If you disable this, you can get some events multiple times on some platforms and JDKs. Check java.nio.file.WatchService limitations for your target platform. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.concurrentConsumers* | The number of concurrent consumers. Increase this value, if your route is slow to prevent buffering in queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.fileHasher* | Reference to io.methvin.watcher.hashing.FileHasher. This prevents emitting duplicate events on some platforms. For working with large files and if you dont need detect multiple modifications per second per file, use #lastModifiedTimeFileHasher. You can also provide custom implementation in registry. | "#murmur3FFileHasher" | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.pollThreads* | The number of threads polling WatchService. Increase this value, if you see OVERFLOW messages in log. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.queueSize* | Maximum size of queue between WatchService and consumer. Unbounded by default. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.useFileHashing* | Enables or disables file hashing to detect duplicate events. If you disable this, you can get some events multiple times on some platforms and JDKs. Check java.nio.file.WatchService limitations for your target platform. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-flatpack-kafka-connector/pom.xml b/connectors/camel-flatpack-kafka-connector/pom.xml
index 2eab539..c764c00 100644
--- a/connectors/camel-flatpack-kafka-connector/pom.xml
+++ b/connectors/camel-flatpack-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-flatpack-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: flatpack</name>
diff --git a/connectors/camel-flatpack-kafka-connector/src/main/assembly/package.xml b/connectors/camel-flatpack-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-flatpack-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-flatpack-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-flatpack-kafka-connector/src/main/docs/camel-flatpack-kafka-sink-connector.adoc b/connectors/camel-flatpack-kafka-connector/src/main/docs/camel-flatpack-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0248957
--- /dev/null
+++ b/connectors/camel-flatpack-kafka-connector/src/main/docs/camel-flatpack-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-flatpack-kafka-connector-sink]]
+= camel-flatpack-kafka-connector sink configuration
+
+When using camel-flatpack-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-flatpack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-flatpack sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | Whether to use fixed or delimiter One of: [fixed] [delim] | "delim" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.resourceUri* | URL for loading the flatpack mapping file from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowShortLines* | Allows for lines to be shorter than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiter* | The default character delimiter for delimited files. | "," | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreExtraColumns* | Allows for lines to be longer than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreFirstRecord* | Whether the first line is ignored for delimited files (for the column headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splitRows* | Sets the Component to send each row as a separate exchange once parsed | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textQualifier* | The text qualifier for delimited files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-flatpack-kafka-connector/src/main/docs/camel-flatpack-kafka-source-connector.adoc b/connectors/camel-flatpack-kafka-connector/src/main/docs/camel-flatpack-kafka-source-connector.adoc
new file mode 100644
index 0000000..038de4d
--- /dev/null
+++ b/connectors/camel-flatpack-kafka-connector/src/main/docs/camel-flatpack-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-flatpack-kafka-connector-source]]
+= camel-flatpack-kafka-connector source configuration
+
+When using camel-flatpack-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-flatpack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-flatpack source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Whether to use fixed or delimiter One of: [fixed] [delim] | "delim" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.resourceUri* | URL for loading the flatpack mapping file from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowShortLines* | Allows for lines to be shorter than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delimiter* | The default character delimiter for delimited files. | "," | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreExtraColumns* | Allows for lines to be longer than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFirstRecord* | Whether the first line is ignored for delimited files (for the column headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitRows* | Sets the Component to send each row as a separate exchange once parsed | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textQualifier* | The text qualifier for delimited files. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-flink-kafka-connector/pom.xml b/connectors/camel-flink-kafka-connector/pom.xml
index 587c493..af8018d 100644
--- a/connectors/camel-flink-kafka-connector/pom.xml
+++ b/connectors/camel-flink-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-flink-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: flink</name>
diff --git a/connectors/camel-flink-kafka-connector/src/main/assembly/package.xml b/connectors/camel-flink-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-flink-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-flink-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-flink-kafka-connector/src/main/docs/camel-flink-kafka-sink-connector.adoc b/connectors/camel-flink-kafka-connector/src/main/docs/camel-flink-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8e82694
--- /dev/null
+++ b/connectors/camel-flink-kafka-connector/src/main/docs/camel-flink-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-flink-kafka-connector-sink]]
+= camel-flink-kafka-connector sink configuration
+
+When using camel-flink-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-flink-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-flink sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointType* | Type of the endpoint (dataset, datastream). One of: [dataset] [datastream] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collect* | Indicates if results should be collected or counted. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSet* | DataSet to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSetCallback* | Function performing action against a DataSet. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataStream* | DataStream to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataStreamCallback* | Function performing action against a DataStream. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataSet* | DataSet to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataSetCallback* | Function performing action against a DataSet. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataStream* | DataStream to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataStreamCallback* | Function performing action against a DataStream. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-fop-kafka-connector/pom.xml b/connectors/camel-fop-kafka-connector/pom.xml
index 44c4a7d..c8b67e1 100644
--- a/connectors/camel-fop-kafka-connector/pom.xml
+++ b/connectors/camel-fop-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-fop-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: fop</name>
diff --git a/connectors/camel-fop-kafka-connector/src/main/assembly/package.xml b/connectors/camel-fop-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-fop-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-fop-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-fop-kafka-connector/src/main/docs/camel-fop-kafka-sink-connector.adoc b/connectors/camel-fop-kafka-connector/src/main/docs/camel-fop-kafka-sink-connector.adoc
new file mode 100644
index 0000000..de440df
--- /dev/null
+++ b/connectors/camel-fop-kafka-connector/src/main/docs/camel-fop-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-fop-kafka-connector-sink]]
+= camel-fop-kafka-connector sink configuration
+
+When using camel-fop-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-fop-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-fop sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.outputType* | The primary output format is PDF but other output formats are also supported. One of: [pdf] [ps] [pcl] [png] [jpeg] [svg] [xml] [mif] [rtf] [txt] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.fopFactory* | Allows to use a custom configured or implementation of org.apache.fop.apps.FopFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userConfigURL* | The location of a configuration file which can be loaded from classpath or file system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fop.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fop.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-freemarker-kafka-connector/pom.xml b/connectors/camel-freemarker-kafka-connector/pom.xml
index beedb97..23b5bd1 100644
--- a/connectors/camel-freemarker-kafka-connector/pom.xml
+++ b/connectors/camel-freemarker-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-freemarker-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: freemarker</name>
diff --git a/connectors/camel-freemarker-kafka-connector/src/main/assembly/package.xml b/connectors/camel-freemarker-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-freemarker-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-freemarker-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-freemarker-kafka-connector/src/main/docs/camel-freemarker-kafka-sink-connector.adoc b/connectors/camel-freemarker-kafka-connector/src/main/docs/camel-freemarker-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a0bcf59
--- /dev/null
+++ b/connectors/camel-freemarker-kafka-connector/src/main/docs/camel-freemarker-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-freemarker-kafka-connector-sink]]
+= camel-freemarker-kafka-connector sink configuration
+
+When using camel-freemarker-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-freemarker-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-freemarker sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.configuration* | Sets the Freemarker configuration to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Sets the encoding to be used for loading the template file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.templateUpdateDelay* | Number of seconds the loaded template resource will remain in the cache. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.freemarker.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.freemarker.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.freemarker.configuration* | To use an existing freemarker.template.Configuration instance as the configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ftp-kafka-connector/pom.xml b/connectors/camel-ftp-kafka-connector/pom.xml
index e2ca174..9539a3d 100644
--- a/connectors/camel-ftp-kafka-connector/pom.xml
+++ b/connectors/camel-ftp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ftp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ftp</name>
diff --git a/connectors/camel-ftp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ftp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ftp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ftp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ftp-kafka-connector/src/main/docs/camel-ftp-kafka-sink-connector.adoc b/connectors/camel-ftp-kafka-connector/src/main/docs/camel-ftp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1b9aa49
--- /dev/null
+++ b/connectors/camel-ftp-kafka-connector/src/main/docs/camel-ftp-kafka-sink-connector.adoc
@@ -0,0 +1,76 @@
+// kafka-connector options: START
+[[camel-ftp-kafka-connector-sink]]
+= camel-ftp-kafka-connector sink configuration
+
+When using camel-ftp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftp sink connector supports 50 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingIntervalSeconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=640. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendNoop* | Whether to send a noop command as a pre-write check before uploading files to the FTP server. This is enabled by default as a validation of the connection is still valid, which allows to silently re-connect to be able to upload the file. However if this causes problems, you can turn this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnConnectFailed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ftp-kafka-connector/src/main/docs/camel-ftp-kafka-source-connector.adoc b/connectors/camel-ftp-kafka-connector/src/main/docs/camel-ftp-kafka-source-connector.adoc
new file mode 100644
index 0000000..a0fae33
--- /dev/null
+++ b/connectors/camel-ftp-kafka-connector/src/main/docs/camel-ftp-kafka-source-connector.adoc
@@ -0,0 +1,127 @@
+// kafka-connector options: START
+[[camel-ftp-kafka-connector-source]]
+= camel-ftp-kafka-connector source configuration
+
+When using camel-ftp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftp source connector supports 101 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingInterval Seconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resumeDownload* | Configures whether resume download is enabled. This must be supported by the FTP server (almost all FTP servers support it). In addition the options localWorkDirectory must be configured so downloaded files are stored in a local directory, and the option binary must be enabled, which is required to support resuming of downloads. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. If enabling this option then you must set stepwise=false as both cannot be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.download* | Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleDirectoryParser AbsoluteResult* | Allows you to set how the consumer will handle subfolders and files in the path if the directory parser results in with absolute paths The reason for this is that some FTP servers may return file names with absolute paths, and if so then the FTP component needs to handle this by converting the returned path into a relative path. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFileNotFoundOr PermissionError* | Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useList* | Whether to allow using LIST command when downloading a file. Default is true. In some use cases you may want to download a specific file and are not allowed to use the LIST command, and therefore you can set this option to false. Notice when using this option, then the specific file to download does not include meta-data information such as file size, timestamp, permissions etc, because those information is only possible to retrieve when LIST command is in use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnConnect Failed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ftps-kafka-connector/pom.xml b/connectors/camel-ftps-kafka-connector/pom.xml
index b3648a2..87b25eb 100644
--- a/connectors/camel-ftps-kafka-connector/pom.xml
+++ b/connectors/camel-ftps-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ftps-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ftps</name>
diff --git a/connectors/camel-ftps-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ftps-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ftps-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ftps-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ftps-kafka-connector/src/main/docs/camel-ftps-kafka-sink-connector.adoc b/connectors/camel-ftps-kafka-connector/src/main/docs/camel-ftps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..177f5af
--- /dev/null
+++ b/connectors/camel-ftps-kafka-connector/src/main/docs/camel-ftps-kafka-sink-connector.adoc
@@ -0,0 +1,85 @@
+// kafka-connector options: START
+[[camel-ftps-kafka-connector-sink]]
+= camel-ftps-kafka-connector sink configuration
+
+When using camel-ftps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftps sink connector supports 59 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingIntervalSeconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=640. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendNoop* | Whether to send a noop command as a pre-write check before uploading files to the FTP server. This is enabled by default as a validation of the connection is still valid, which allows to silently re-connect to be able to upload the file. However if this causes problems, you can turn this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnConnectFailed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableSecureDataChannel Defaults* | Use this option to disable default options when using secure data channel. This allows you to be in full control what the execPbsz and execProt setting should be used. Default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.execPbsz* | When using secure data channel you can set the exec protection buffer size | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.execProt* | The exec protection level PROT command. C - Clear S - Safe(SSL protocol only) E - Confidential(SSL protocol only) P - Private | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientKeyStoreParameters* | Set the key store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientTrustStoreParameters* | Set the trust store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implicit* | Set the security mode (Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProtocol* | Set the underlying security protocol. | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Gets the JSSE configuration that overrides any settings in FtpsEndpoint#\ftpClientKeyStoreParameters, \ftpClientTrustStoreParameters, and FtpsConfiguration#getSecurityProtocol(). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ftps-kafka-connector/src/main/docs/camel-ftps-kafka-source-connector.adoc b/connectors/camel-ftps-kafka-connector/src/main/docs/camel-ftps-kafka-source-connector.adoc
new file mode 100644
index 0000000..4930911
--- /dev/null
+++ b/connectors/camel-ftps-kafka-connector/src/main/docs/camel-ftps-kafka-source-connector.adoc
@@ -0,0 +1,136 @@
+// kafka-connector options: START
+[[camel-ftps-kafka-connector-source]]
+= camel-ftps-kafka-connector source configuration
+
+When using camel-ftps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftps source connector supports 110 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingInterval Seconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resumeDownload* | Configures whether resume download is enabled. This must be supported by the FTP server (almost all FTP servers support it). In addition the options localWorkDirectory must be configured so downloaded files are stored in a local directory, and the option binary must be enabled, which is required to support resuming of downloads. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. If enabling this option then you must set stepwise=false as both cannot be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.download* | Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleDirectoryParser AbsoluteResult* | Allows you to set how the consumer will handle subfolders and files in the path if the directory parser results in with absolute paths The reason for this is that some FTP servers may return file names with absolute paths, and if so then the FTP component needs to handle this by converting the returned path into a relative path. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFileNotFoundOr PermissionError* | Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useList* | Whether to allow using LIST command when downloading a file. Default is true. In some use cases you may want to download a specific file and are not allowed to use the LIST command, and therefore you can set this option to false. Notice when using this option, then the specific file to download does not include meta-data information such as file size, timestamp, permissions etc, because those information is only possible to retrieve when LIST command is in use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnConnect Failed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableSecureDataChannel Defaults* | Use this option to disable default options when using secure data channel. This allows you to be in full control what the execPbsz and execProt setting should be used. Default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.execPbsz* | When using secure data channel you can set the exec protection buffer size | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.execProt* | The exec protection level PROT command. C - Clear S - Safe(SSL protocol only) E - Confidential(SSL protocol only) P - Private | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientKeyStoreParameters* | Set the key store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientTrustStore Parameters* | Set the trust store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implicit* | Set the security mode (Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProtocol* | Set the underlying security protocol. | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Gets the JSSE configuration that overrides any settings in FtpsEndpoint#\ftpClientKeyStoreParameters, \ftpClientTrustStoreParameters, and FtpsConfiguration#getSecurityProtocol(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ganglia-kafka-connector/pom.xml b/connectors/camel-ganglia-kafka-connector/pom.xml
index 4d8af72..895b922 100644
--- a/connectors/camel-ganglia-kafka-connector/pom.xml
+++ b/connectors/camel-ganglia-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ganglia-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ganglia</name>
diff --git a/connectors/camel-ganglia-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ganglia-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ganglia-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ganglia-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ganglia-kafka-connector/src/main/docs/camel-ganglia-kafka-sink-connector.adoc b/connectors/camel-ganglia-kafka-connector/src/main/docs/camel-ganglia-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6886e63
--- /dev/null
+++ b/connectors/camel-ganglia-kafka-connector/src/main/docs/camel-ganglia-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-ganglia-kafka-connector-sink]]
+= camel-ganglia-kafka-connector sink configuration
+
+When using camel-ganglia-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ganglia-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ganglia sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Host name for Ganglia server | "239.2.11.71" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port for Ganglia server | 8649 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dmax* | Minumum time in seconds before Ganglia will purge the metric value if it expires. Set to 0 and the value will remain in Ganglia indefinitely until a gmond agent restart. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupName* | The group that the metric belongs to. | "java" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricName* | The name to use for the metric. | "metric" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mode* | Send the UDP metric packets using MULTICAST or UNICAST One of: [MULTICAST] [UNICAST] | "MULTICAST" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefix* | Prefix the metric name with this string and an underscore. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.slope* | The slope One of: [ZERO] [POSITIVE] [NEGATIVE] [BOTH] | "BOTH" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.spoofHostname* | Spoofing information IP:hostname | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tmax* | Maximum time in seconds that the value can be considered current. After this, Ganglia considers the value to have expired. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | If using multicast, set the TTL of the packets | 5 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.type* | The type of value One of: [STRING] [INT8] [UINT8] [INT16] [UINT16] [INT32] [UINT32] [FLOAT] [DOUBLE] | "STRING" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.units* | Any unit of measurement that qualifies the metric, e.g. widgets, litres, bytes. Do not include a prefix such as k (kilo) or m (milli), other tools may scale the units later. The value should be unscaled. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wireFormat31x* | Use the wire format of Ganglia 3.1.0 and later versions. Set this to false to use Ganglia 3.0.x or earlier. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ganglia.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ganglia.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ganglia.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-geocoder-kafka-connector/pom.xml b/connectors/camel-geocoder-kafka-connector/pom.xml
index f3acdf8..8a97715 100644
--- a/connectors/camel-geocoder-kafka-connector/pom.xml
+++ b/connectors/camel-geocoder-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-geocoder-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: geocoder</name>
diff --git a/connectors/camel-geocoder-kafka-connector/src/main/assembly/package.xml b/connectors/camel-geocoder-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-geocoder-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-geocoder-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-geocoder-kafka-connector/src/main/docs/camel-geocoder-kafka-sink-connector.adoc b/connectors/camel-geocoder-kafka-connector/src/main/docs/camel-geocoder-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b5e444a
--- /dev/null
+++ b/connectors/camel-geocoder-kafka-connector/src/main/docs/camel-geocoder-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-geocoder-kafka-connector-sink]]
+= camel-geocoder-kafka-connector sink configuration
+
+When using camel-geocoder-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-geocoder-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-geocoder sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.address* | The geo address which should be prefixed with address: | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.latlng* | The geo latitude and longitude which should be prefixed with latlng: | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headersOnly* | Whether to only enrich the Exchange with headers, and leave the body as-is. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.language* | The language to use. | "en" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Domain for proxy NTML authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Optional host for proxy NTML authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Authentication method for proxy, either as Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiKey* | To use google apiKey | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | To use google premium with this client id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKey* | To use google premium with this client key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.geocoder.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.geocoder.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-git-kafka-connector/pom.xml b/connectors/camel-git-kafka-connector/pom.xml
index 19914ac..e75e8ef 100644
--- a/connectors/camel-git-kafka-connector/pom.xml
+++ b/connectors/camel-git-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-git-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: git</name>
diff --git a/connectors/camel-git-kafka-connector/src/main/assembly/package.xml b/connectors/camel-git-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-git-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-git-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-git-kafka-connector/src/main/docs/camel-git-kafka-sink-connector.adoc b/connectors/camel-git-kafka-connector/src/main/docs/camel-git-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f935803
--- /dev/null
+++ b/connectors/camel-git-kafka-connector/src/main/docs/camel-git-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-git-kafka-connector-sink]]
+= camel-git-kafka-connector sink configuration
+
+When using camel-git-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-git-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-git sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.localPath* | Local repository path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.branchName* | The branch name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Remote repository password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remoteName* | The remote repository name to use in particular operation like pull | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remotePath* | The remote repository path | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagName* | The tag name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Remote repository username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowEmpty* | The flag to manage empty git commits | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do on the repository One of: [clone] [init] [add] [remove] [commit] [commitAll] [createBranch] [deleteBranch] [createTag] [deleteTag] [status] [log] [push] [pull] [showBranches] [cherryPick] [remoteAdd] [remoteList] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-git-kafka-connector/src/main/docs/camel-git-kafka-source-connector.adoc b/connectors/camel-git-kafka-connector/src/main/docs/camel-git-kafka-source-connector.adoc
new file mode 100644
index 0000000..c689d38
--- /dev/null
+++ b/connectors/camel-git-kafka-connector/src/main/docs/camel-git-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-git-kafka-connector-source]]
+= camel-git-kafka-connector source configuration
+
+When using camel-git-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-git-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-git source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.localPath* | Local repository path | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.branchName* | The branch name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Remote repository password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remoteName* | The remote repository name to use in particular operation like pull | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remotePath* | The remote repository path | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagName* | The tag name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Remote repository username | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | The consumer type One of: [commit] [tag] [branch] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-github-kafka-connector/pom.xml b/connectors/camel-github-kafka-connector/pom.xml
index 47770a9..c04cd7b 100644
--- a/connectors/camel-github-kafka-connector/pom.xml
+++ b/connectors/camel-github-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-github-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: github</name>
diff --git a/connectors/camel-github-kafka-connector/src/main/assembly/package.xml b/connectors/camel-github-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-github-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-github-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-github-kafka-connector/src/main/docs/camel-github-kafka-sink-connector.adoc b/connectors/camel-github-kafka-connector/src/main/docs/camel-github-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2d12b1a
--- /dev/null
+++ b/connectors/camel-github-kafka-connector/src/main/docs/camel-github-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-github-kafka-connector-sink]]
+= camel-github-kafka-connector sink configuration
+
+When using camel-github-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-github-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-github sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | What git operation to execute One of: [CLOSEPULLREQUEST] [PULLREQUESTCOMMENT] [COMMIT] [PULLREQUEST] [TAG] [PULLREQUESTSTATE] [PULLREQUESTFILES] [GETCOMMITFILE] [CREATEISSUE] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.oauthToken* | GitHub OAuth token, required unless username & password are provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | GitHub password, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repoName* | GitHub repository name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.repoOwner* | GitHub repository owner (organization) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | GitHub username, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | To use the given encoding when getting a git commit file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.state* | To set git commit status state One of: [error] [failure] [pending] [success] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetUrl* | To set git commit status target url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-github-kafka-connector/src/main/docs/camel-github-kafka-source-connector.adoc b/connectors/camel-github-kafka-connector/src/main/docs/camel-github-kafka-source-connector.adoc
new file mode 100644
index 0000000..4c3a6c7
--- /dev/null
+++ b/connectors/camel-github-kafka-connector/src/main/docs/camel-github-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-github-kafka-connector-source]]
+= camel-github-kafka-connector source configuration
+
+When using camel-github-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-github-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-github source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | What git operation to execute One of: [CLOSEPULLREQUEST] [PULLREQUESTCOMMENT] [COMMIT] [PULLREQUEST] [TAG] [PULLREQUESTSTATE] [PULLREQUESTFILES] [GETCOMMITFILE] [CREATEISSUE] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.branchName* | Name of branch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | GitHub OAuth token, required unless username & password are provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | GitHub password, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repoName* | GitHub repository name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.repoOwner* | GitHub repository owner (organization) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.username* | GitHub username, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-bigquery-kafka-connector/pom.xml b/connectors/camel-google-bigquery-kafka-connector/pom.xml
index a79f28b..9f913cd 100644
--- a/connectors/camel-google-bigquery-kafka-connector/pom.xml
+++ b/connectors/camel-google-bigquery-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-bigquery-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-bigquery</name>
diff --git a/connectors/camel-google-bigquery-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-bigquery-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-bigquery-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-bigquery-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-bigquery-kafka-connector/src/main/docs/camel-google-bigquery-kafka-sink-connector.adoc b/connectors/camel-google-bigquery-kafka-connector/src/main/docs/camel-google-bigquery-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fa60d0d
--- /dev/null
+++ b/connectors/camel-google-bigquery-kafka-connector/src/main/docs/camel-google-bigquery-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-google-bigquery-kafka-connector-sink]]
+= camel-google-bigquery-kafka-connector sink configuration
+
+When using camel-google-bigquery-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-bigquery-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-bigquery sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.datasetId* | BigQuery Dataset Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.tableId* | BigQuery table id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useAsInsertId* | Field name to use as insert id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.connectionFactory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.datasetId* | BigQuery Dataset Id | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-bigquery-sql-kafka-connector/pom.xml b/connectors/camel-google-bigquery-sql-kafka-connector/pom.xml
index 3f92966..d6cfb6c 100644
--- a/connectors/camel-google-bigquery-sql-kafka-connector/pom.xml
+++ b/connectors/camel-google-bigquery-sql-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-bigquery-sql-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-bigquery-sql</name>
diff --git a/connectors/camel-google-bigquery-sql-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-bigquery-sql-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-bigquery-sql-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-bigquery-sql-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-bigquery-sql-kafka-connector/src/main/docs/camel-google-bigquery-sql-kafka-sink-connector.adoc b/connectors/camel-google-bigquery-sql-kafka-connector/src/main/docs/camel-google-bigquery-sql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a6f3f62
--- /dev/null
+++ b/connectors/camel-google-bigquery-sql-kafka-connector/src/main/docs/camel-google-bigquery-sql-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-google-bigquery-sql-kafka-connector-sink]]
+= camel-google-bigquery-sql-kafka-connector sink configuration
+
+When using camel-google-bigquery-sql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-bigquery-sql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-bigquery-sql sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.query* | BigQuery standard SQL query | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionFactory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.connection Factory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-calendar-kafka-connector/pom.xml b/connectors/camel-google-calendar-kafka-connector/pom.xml
index 5d0becb..08fbfcf 100644
--- a/connectors/camel-google-calendar-kafka-connector/pom.xml
+++ b/connectors/camel-google-calendar-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-calendar-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-calendar</name>
diff --git a/connectors/camel-google-calendar-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-calendar-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-calendar-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-calendar-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-calendar-kafka-connector/src/main/docs/camel-google-calendar-kafka-sink-connector.adoc b/connectors/camel-google-calendar-kafka-connector/src/main/docs/camel-google-calendar-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a5fa662
--- /dev/null
+++ b/connectors/camel-google-calendar-kafka-connector/src/main/docs/camel-google-calendar-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-google-calendar-kafka-connector-sink]]
+= camel-google-calendar-kafka-connector sink configuration
+
+When using camel-google-calendar-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-calendar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-calendar sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [ACL] [LIST] [CALENDARS] [CHANNELS] [COLORS] [FREEBUSY] [EVENTS] [SETTINGS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [calendarImport] [clear] [delete] [get] [insert] [instances] [list] [move] [patch] [query] [quickAdd] [stop] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google calendar application name. Example would be camel-google-calendar/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.emailAddress* | The emailAddress of the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.p12FileName* | The name of the p12 file which has the private key to use with the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scopes* | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | "https://www.googleapis.com/auth/calendar" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | The email address of the user the application is trying to impersonate in the service account flow | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-calendar-kafka-connector/src/main/docs/camel-google-calendar-kafka-source-connector.adoc b/connectors/camel-google-calendar-kafka-connector/src/main/docs/camel-google-calendar-kafka-source-connector.adoc
new file mode 100644
index 0000000..71dba4b
--- /dev/null
+++ b/connectors/camel-google-calendar-kafka-connector/src/main/docs/camel-google-calendar-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-google-calendar-kafka-connector-source]]
+= camel-google-calendar-kafka-connector source configuration
+
+When using camel-google-calendar-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-calendar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-calendar source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [ACL] [LIST] [CALENDARS] [CHANNELS] [COLORS] [FREEBUSY] [EVENTS] [SETTINGS] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [calendarImport] [clear] [delete] [get] [insert] [instances] [list] [move] [patch] [query] [quickAdd] [stop] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google calendar application name. Example would be camel-google-calendar/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.emailAddress* | The emailAddress of the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.p12FileName* | The name of the p12 file which has the private key to use with the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | "https://www.googleapis.com/auth/calendar" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | The email address of the user the application is trying to impersonate in the service account flow | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-calendar-stream-kafka-connector/pom.xml b/connectors/camel-google-calendar-stream-kafka-connector/pom.xml
index 37c15a3..13efe83 100644
--- a/connectors/camel-google-calendar-stream-kafka-connector/pom.xml
+++ b/connectors/camel-google-calendar-stream-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-calendar-stream-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-calendar-stream</name>
diff --git a/connectors/camel-google-calendar-stream-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-calendar-stream-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-calendar-stream-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-calendar-stream-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-calendar-stream-kafka-connector/src/main/docs/camel-google-calendar-stream-kafka-source-connector.adoc b/connectors/camel-google-calendar-stream-kafka-connector/src/main/docs/camel-google-calendar-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..a87bfc5
--- /dev/null
+++ b/connectors/camel-google-calendar-stream-kafka-connector/src/main/docs/camel-google-calendar-stream-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-google-calendar-stream-kafka-connector-source]]
+= camel-google-calendar-stream-kafka-connector source configuration
+
+When using camel-google-calendar-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-calendar-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-calendar-stream source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.index* | Specifies an index for the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google Calendar application name. Example would be camel-google-calendar/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.calendarId* | The calendarId to be used | "primary" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.considerLastUpdate* | Take into account the lastUpdate of the last event polled as start date for the next poll | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeFromNow* | Consume events in the selected calendar from now on | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Max results to be returned | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The query to execute on calendar | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a calendar application to have to a user account. See \https://developers.google.com/calendar/auth for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar-stream.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar-stream.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar-stream.client Factory* | The client Factory | null | ConfigDef.Importance.MEDIUM
+| * camel.component.google-calendar-stream.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-drive-kafka-connector/pom.xml b/connectors/camel-google-drive-kafka-connector/pom.xml
index 78d698b..0795f1c 100644
--- a/connectors/camel-google-drive-kafka-connector/pom.xml
+++ b/connectors/camel-google-drive-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-drive-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-drive</name>
diff --git a/connectors/camel-google-drive-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-drive-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-drive-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-drive-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-drive-kafka-connector/src/main/docs/camel-google-drive-kafka-sink-connector.adoc b/connectors/camel-google-drive-kafka-connector/src/main/docs/camel-google-drive-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5ba8d3b
--- /dev/null
+++ b/connectors/camel-google-drive-kafka-connector/src/main/docs/camel-google-drive-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-google-drive-kafka-connector-sink]]
+= camel-google-drive-kafka-connector sink configuration
+
+When using camel-google-drive-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-drive-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-drive sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [drive-about] [drive-apps] [drive-changes] [drive-channels] [drive-children] [drive-comments] [drive-files] [drive-parents] [drive-permissions] [drive-properties] [drive-realtime] [drive-replies] [drive-revisions] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [copy] [delete] [get] [getIdForEmail] [insert] [list] [patch] [stop] [touch] [trash] [untrash] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google drive application name. Example would be camel-google-drive/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scopes* | Specifies the level of permissions you want a drive application to have to a user account. See \https://developers.google.com/drive/web/scopes for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-drive-kafka-connector/src/main/docs/camel-google-drive-kafka-source-connector.adoc b/connectors/camel-google-drive-kafka-connector/src/main/docs/camel-google-drive-kafka-source-connector.adoc
new file mode 100644
index 0000000..fd60a09
--- /dev/null
+++ b/connectors/camel-google-drive-kafka-connector/src/main/docs/camel-google-drive-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-google-drive-kafka-connector-source]]
+= camel-google-drive-kafka-connector source configuration
+
+When using camel-google-drive-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-drive-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-drive source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [drive-about] [drive-apps] [drive-changes] [drive-channels] [drive-children] [drive-comments] [drive-files] [drive-parents] [drive-permissions] [drive-properties] [drive-realtime] [drive-replies] [drive-revisions] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [copy] [delete] [get] [getIdForEmail] [insert] [list] [patch] [stop] [touch] [trash] [untrash] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google drive application name. Example would be camel-google-drive/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a drive application to have to a user account. See \https://developers.google.com/drive/web/scopes for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-mail-kafka-connector/pom.xml b/connectors/camel-google-mail-kafka-connector/pom.xml
index ddf5052..505b6dc 100644
--- a/connectors/camel-google-mail-kafka-connector/pom.xml
+++ b/connectors/camel-google-mail-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-mail-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-mail</name>
diff --git a/connectors/camel-google-mail-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-mail-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-mail-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-mail-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-mail-kafka-connector/src/main/docs/camel-google-mail-kafka-sink-connector.adoc b/connectors/camel-google-mail-kafka-connector/src/main/docs/camel-google-mail-kafka-sink-connector.adoc
new file mode 100644
index 0000000..39e8b8a
--- /dev/null
+++ b/connectors/camel-google-mail-kafka-connector/src/main/docs/camel-google-mail-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-google-mail-kafka-connector-sink]]
+= camel-google-mail-kafka-connector sink configuration
+
+When using camel-google-mail-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-mail-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-mail sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [THREADS] [MESSAGES] [ATTACHMENTS] [LABELS] [HISTORY] [DRAFTS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [attachments] [create] [delete] [get] [getProfile] [gmailImport] [insert] [list] [modify] [patch] [send] [trash] [untrash] [update] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google mail application name. Example would be camel-google-mail/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleMailClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-mail-kafka-connector/src/main/docs/camel-google-mail-kafka-source-connector.adoc b/connectors/camel-google-mail-kafka-connector/src/main/docs/camel-google-mail-kafka-source-connector.adoc
new file mode 100644
index 0000000..08b1dbe
--- /dev/null
+++ b/connectors/camel-google-mail-kafka-connector/src/main/docs/camel-google-mail-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-google-mail-kafka-connector-source]]
+= camel-google-mail-kafka-connector source configuration
+
+When using camel-google-mail-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-mail-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-mail source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [THREADS] [MESSAGES] [ATTACHMENTS] [LABELS] [HISTORY] [DRAFTS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [attachments] [create] [delete] [get] [getProfile] [gmailImport] [insert] [list] [modify] [patch] [send] [trash] [untrash] [update] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google mail application name. Example would be camel-google-mail/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleMailClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-mail-stream-kafka-connector/pom.xml b/connectors/camel-google-mail-stream-kafka-connector/pom.xml
index ec50481..07ae5bf 100644
--- a/connectors/camel-google-mail-stream-kafka-connector/pom.xml
+++ b/connectors/camel-google-mail-stream-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-mail-stream-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-mail-stream</name>
diff --git a/connectors/camel-google-mail-stream-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-mail-stream-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-mail-stream-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-mail-stream-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-mail-stream-kafka-connector/src/main/docs/camel-google-mail-stream-kafka-source-connector.adoc b/connectors/camel-google-mail-stream-kafka-connector/src/main/docs/camel-google-mail-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..41f3b4d
--- /dev/null
+++ b/connectors/camel-google-mail-stream-kafka-connector/src/main/docs/camel-google-mail-stream-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-google-mail-stream-kafka-connector-source]]
+= camel-google-mail-stream-kafka-connector source configuration
+
+When using camel-google-mail-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-mail-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-mail-stream source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.index* | Specifies an index for the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google mail application name. Example would be camel-google-mail/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labels* | Comma separated list of labels to take into account | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.markAsRead* | Mark the message as read once it has been consumed | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Max results to be returned | 10L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The query to execute on gmail box | "is:unread" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.clientFactory* | The client Factory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-pubsub-kafka-connector/pom.xml b/connectors/camel-google-pubsub-kafka-connector/pom.xml
index 5342113..e8df240 100644
--- a/connectors/camel-google-pubsub-kafka-connector/pom.xml
+++ b/connectors/camel-google-pubsub-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-pubsub-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-pubsub</name>
diff --git a/connectors/camel-google-pubsub-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-pubsub-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-pubsub-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-pubsub-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-pubsub-kafka-connector/src/main/docs/camel-google-pubsub-kafka-sink-connector.adoc b/connectors/camel-google-pubsub-kafka-connector/src/main/docs/camel-google-pubsub-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0e6ebdc
--- /dev/null
+++ b/connectors/camel-google-pubsub-kafka-connector/src/main/docs/camel-google-pubsub-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-google-pubsub-kafka-connector-sink]]
+= camel-google-pubsub-kafka-connector sink configuration
+
+When using camel-google-pubsub-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-pubsub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-pubsub sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.projectId* | Project Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.destinationName* | Destination Name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.ackMode* | AUTO = exchange gets ack'ed/nack'ed on completion. NONE = downstream process has to ack/nack explicitly One of: [AUTO] [NONE] | "AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.concurrentConsumers* | The number of parallel streams consuming from the subscription | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | ConnectionFactory to obtain connection to PubSub Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggerId* | Logger ID to use when a match to the parent route required | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerPoll* | The max number of messages to receive from the server in a single API call | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.connectionFactory* | Sets the connection factory to use: provides the ability to explicitly manage connection credentials: - the path to the key file - the Service Account Key / Email pair | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-pubsub-kafka-connector/src/main/docs/camel-google-pubsub-kafka-source-connector.adoc b/connectors/camel-google-pubsub-kafka-connector/src/main/docs/camel-google-pubsub-kafka-source-connector.adoc
new file mode 100644
index 0000000..d3227b9
--- /dev/null
+++ b/connectors/camel-google-pubsub-kafka-connector/src/main/docs/camel-google-pubsub-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-google-pubsub-kafka-connector-source]]
+= camel-google-pubsub-kafka-connector source configuration
+
+When using camel-google-pubsub-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-pubsub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-pubsub source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.projectId* | Project Id | null | ConfigDef.Importance.HIGH
+| *camel.source.path.destinationName* | Destination Name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.ackMode* | AUTO = exchange gets ack'ed/nack'ed on completion. NONE = downstream process has to ack/nack explicitly One of: [AUTO] [NONE] | "AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | The number of parallel streams consuming from the subscription | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | ConnectionFactory to obtain connection to PubSub Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggerId* | Logger ID to use when a match to the parent route required | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | The max number of messages to receive from the server in a single API call | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.connectionFactory* | Sets the connection factory to use: provides the ability to explicitly manage connection credentials: - the path to the key file - the Service Account Key / Email pair | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-sheets-kafka-connector/pom.xml b/connectors/camel-google-sheets-kafka-connector/pom.xml
index ef03fd2..cdf49a2 100644
--- a/connectors/camel-google-sheets-kafka-connector/pom.xml
+++ b/connectors/camel-google-sheets-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-sheets-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-sheets</name>
diff --git a/connectors/camel-google-sheets-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-sheets-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-sheets-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-sheets-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-sheets-kafka-connector/src/main/docs/camel-google-sheets-kafka-sink-connector.adoc b/connectors/camel-google-sheets-kafka-connector/src/main/docs/camel-google-sheets-kafka-sink-connector.adoc
new file mode 100644
index 0000000..abf7bf0
--- /dev/null
+++ b/connectors/camel-google-sheets-kafka-connector/src/main/docs/camel-google-sheets-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-google-sheets-kafka-connector-sink]]
+= camel-google-sheets-kafka-connector sink configuration
+
+When using camel-google-sheets-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-sheets-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-sheets sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [SPREADSHEETS] [DATA] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [create] [get] [update] [append] [batchUpdate] [clear] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google Sheets application name. Example would be camel-google-sheets/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Sheets component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.clientFactory* | To use the GoogleSheetsClientFactory as factory for creating the client. Will by default use BatchGoogleSheetsClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-sheets-kafka-connector/src/main/docs/camel-google-sheets-kafka-source-connector.adoc b/connectors/camel-google-sheets-kafka-connector/src/main/docs/camel-google-sheets-kafka-source-connector.adoc
new file mode 100644
index 0000000..2c7a41b
--- /dev/null
+++ b/connectors/camel-google-sheets-kafka-connector/src/main/docs/camel-google-sheets-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-google-sheets-kafka-connector-source]]
+= camel-google-sheets-kafka-connector source configuration
+
+When using camel-google-sheets-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-sheets-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-sheets source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [SPREADSHEETS] [DATA] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [create] [get] [update] [append] [batchUpdate] [clear] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google Sheets application name. Example would be camel-google-sheets/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Sheets component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.clientFactory* | To use the GoogleSheetsClientFactory as factory for creating the client. Will by default use BatchGoogleSheetsClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-google-sheets-stream-kafka-connector/pom.xml b/connectors/camel-google-sheets-stream-kafka-connector/pom.xml
index 6979b30..e18dd3c 100644
--- a/connectors/camel-google-sheets-stream-kafka-connector/pom.xml
+++ b/connectors/camel-google-sheets-stream-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-google-sheets-stream-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: google-sheets-stream</name>
diff --git a/connectors/camel-google-sheets-stream-kafka-connector/src/main/assembly/package.xml b/connectors/camel-google-sheets-stream-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-google-sheets-stream-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-google-sheets-stream-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-google-sheets-stream-kafka-connector/src/main/docs/camel-google-sheets-stream-kafka-source-connector.adoc b/connectors/camel-google-sheets-stream-kafka-connector/src/main/docs/camel-google-sheets-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..4b70577
--- /dev/null
+++ b/connectors/camel-google-sheets-stream-kafka-connector/src/main/docs/camel-google-sheets-stream-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-google-sheets-stream-kafka-connector-source]]
+= camel-google-sheets-stream-kafka-connector source configuration
+
+When using camel-google-sheets-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-sheets-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-sheets-stream source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | Sets the apiName. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google sheets application name. Example would be camel-google-sheets/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeGridData* | True if grid data should be returned. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.majorDimension* | Specifies the major dimension that results should use.. One of: [ROWS] [COLUMNS] [DIMENSION_UNSPECIFIED] | "ROWS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Specify the maximum number of returned results. This will limit the number of rows in a returned value range data set or the number of returned value ranges in a batch request. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.range* | Specifies the range of rows and columns in a sheet to get data from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a sheets application to have to a user account. See \https://developers.google.com/identity/protocols/googlescopes for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitResults* | True if value range result should be split into rows or columns to process each of them individually. When true each row or column is represented with a separate exchange in batch processing. Otherwise value range object is used as exchange junk size. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.spreadsheetId* | Specifies the spreadsheet identifier that is used to identify the target to obtain. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueRenderOption* | Determines how values should be rendered in the output. One of: [FORMATTED_VALUE] [UNFORMATTED_VALUE] [FORMULA] | "FORMATTED_VALUE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.clientFactory* | To use the GoogleSheetsClientFactory as factory for creating the client. Will by default use BatchGoogleSheetsClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-gora-kafka-connector/pom.xml b/connectors/camel-gora-kafka-connector/pom.xml
index 0a73a92..ae69adb 100644
--- a/connectors/camel-gora-kafka-connector/pom.xml
+++ b/connectors/camel-gora-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-gora-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: gora</name>
diff --git a/connectors/camel-gora-kafka-connector/src/main/assembly/package.xml b/connectors/camel-gora-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-gora-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-gora-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-gora-kafka-connector/src/main/docs/camel-gora-kafka-sink-connector.adoc b/connectors/camel-gora-kafka-connector/src/main/docs/camel-gora-kafka-sink-connector.adoc
new file mode 100644
index 0000000..891f839
--- /dev/null
+++ b/connectors/camel-gora-kafka-connector/src/main/docs/camel-gora-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-gora-kafka-connector-sink]]
+= camel-gora-kafka-connector sink configuration
+
+When using camel-gora-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-gora-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-gora sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Instance name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataStoreClass* | The type of the dataStore | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyClass* | The type class of the key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueClass* | The type of the value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushOnEveryOperation* | Flush on every operation | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hadoopConfiguration* | Hadoop Configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-gora-kafka-connector/src/main/docs/camel-gora-kafka-source-connector.adoc b/connectors/camel-gora-kafka-connector/src/main/docs/camel-gora-kafka-source-connector.adoc
new file mode 100644
index 0000000..d5abe1b
--- /dev/null
+++ b/connectors/camel-gora-kafka-connector/src/main/docs/camel-gora-kafka-source-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-gora-kafka-connector-source]]
+= camel-gora-kafka-connector source configuration
+
+When using camel-gora-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-gora-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-gora source connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Instance name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataStoreClass* | The type of the dataStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyClass* | The type class of the key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueClass* | The type of the value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent consumers | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endKey* | The End Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endTime* | The End Time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fields* | The Fields | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyRangeFrom* | The Key Range From | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyRangeTo* | The Key Range To | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | The Limit | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startKey* | The Start Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startTime* | The Start Time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeRangeFrom* | The Time Range From | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeRangeTo* | The Time Range To | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timestamp* | The Timestamp | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hadoopConfiguration* | Hadoop Configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-grape-kafka-connector/pom.xml b/connectors/camel-grape-kafka-connector/pom.xml
index 3d97f36..e870c51 100644
--- a/connectors/camel-grape-kafka-connector/pom.xml
+++ b/connectors/camel-grape-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-grape-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: grape</name>
diff --git a/connectors/camel-grape-kafka-connector/src/main/assembly/package.xml b/connectors/camel-grape-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-grape-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-grape-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-grape-kafka-connector/src/main/docs/camel-grape-kafka-sink-connector.adoc b/connectors/camel-grape-kafka-connector/src/main/docs/camel-grape-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f500280
--- /dev/null
+++ b/connectors/camel-grape-kafka-connector/src/main/docs/camel-grape-kafka-sink-connector.adoc
@@ -0,0 +1,33 @@
+// kafka-connector options: START
+[[camel-grape-kafka-connector-sink]]
+= camel-grape-kafka-connector sink configuration
+
+When using camel-grape-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-grape-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-grape sink connector supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.defaultCoordinates* | Maven coordinates to use as default to grab if the message body is empty. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grape.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grape.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grape.patchesRepository* | Implementation of org.apache.camel.component.grape.PatchesRepository, by default: FilePatchesRepository | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-graphql-kafka-connector/pom.xml b/connectors/camel-graphql-kafka-connector/pom.xml
index dba4c02..66ddc4d 100644
--- a/connectors/camel-graphql-kafka-connector/pom.xml
+++ b/connectors/camel-graphql-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-graphql-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: graphql</name>
diff --git a/connectors/camel-graphql-kafka-connector/src/main/assembly/package.xml b/connectors/camel-graphql-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-graphql-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-graphql-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-graphql-kafka-connector/src/main/docs/camel-graphql-kafka-sink-connector.adoc b/connectors/camel-graphql-kafka-connector/src/main/docs/camel-graphql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e27a6d1
--- /dev/null
+++ b/connectors/camel-graphql-kafka-connector/src/main/docs/camel-graphql-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-graphql-kafka-connector-sink]]
+= camel-graphql-kafka-connector sink configuration
+
+When using camel-graphql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-graphql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-graphql sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The GraphQL server URI. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operationName* | The query or mutation name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host in the format hostname:port. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | The query text. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryFile* | The query file name located in the classpath. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.variables* | The JsonObject instance containing the operation variables. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token sent in the Authorization header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for Basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for Basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.graphql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.graphql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-grpc-kafka-connector/pom.xml b/connectors/camel-grpc-kafka-connector/pom.xml
index 68c673f..61e7348 100644
--- a/connectors/camel-grpc-kafka-connector/pom.xml
+++ b/connectors/camel-grpc-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-grpc-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: grpc</name>
diff --git a/connectors/camel-grpc-kafka-connector/src/main/assembly/package.xml b/connectors/camel-grpc-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-grpc-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-grpc-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-grpc-kafka-connector/src/main/docs/camel-grpc-kafka-sink-connector.adoc b/connectors/camel-grpc-kafka-connector/src/main/docs/camel-grpc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bfc7d84
--- /dev/null
+++ b/connectors/camel-grpc-kafka-connector/src/main/docs/camel-grpc-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-grpc-kafka-connector-sink]]
+= camel-grpc-kafka-connector sink configuration
+
+When using camel-grpc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-grpc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-grpc sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The gRPC server host name. This is localhost or 0.0.0.0 when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The gRPC local or remote server port | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.service* | Fully qualified service name from the protocol buffer descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.flowControlWindow* | The HTTP/2 flow control window size (MiB) | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessageSize* | The maximum message size allowed to be received/sent (MiB) | 4194304 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | gRPC method name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerStrategy* | The mode used to communicate with a remote gRPC server. In SIMPLE mode a single exchange is translated into a remote procedure call. In STREAMING mode all exchanges will be sent within the same request (input and output of the recipient gRPC service must be of type 'stream'). One of: [SIMPLE] [STREAMING] | "SIMPLE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamRepliesTo* | When using STREAMING client mode, it indicates the endpoint where responses should be forwarded. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userAgent* | The user agent header passed to the server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationType* | Authentication method type in advance to the SSL/TLS negotiation One of: [NONE] [GOOGLE] [JWT] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtAlgorithm* | JSON Web Token sign algorithm One of: [HMAC256] [HMAC384] [HMAC512] | "HMAC256" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtIssuer* | JSON Web Token issuer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtSecret* | JSON Web Token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtSubject* | JSON Web Token subject | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyCertChainResource* | The X.509 certificate chain file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPassword* | The PKCS#8 private key file password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyResource* | The PKCS#8 private key file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.negotiationType* | Identifies the security negotiation type used for HTTP/2 communication One of: [TLS] [PLAINTEXT_UPGRADE] [PLAINTEXT] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceAccountResource* | Service Account key file in JSON format resource link supported by the Google Cloud SDK | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCertCollectionResource* | The trusted certificates collection file resource in PEM format for verifying the remote endpoint's certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-grpc-kafka-connector/src/main/docs/camel-grpc-kafka-source-connector.adoc b/connectors/camel-grpc-kafka-connector/src/main/docs/camel-grpc-kafka-source-connector.adoc
new file mode 100644
index 0000000..7ad08bf
--- /dev/null
+++ b/connectors/camel-grpc-kafka-connector/src/main/docs/camel-grpc-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-grpc-kafka-connector-source]]
+= camel-grpc-kafka-connector source configuration
+
+When using camel-grpc-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-grpc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-grpc source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The gRPC server host name. This is localhost or 0.0.0.0 when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The gRPC local or remote server port | null | ConfigDef.Importance.HIGH
+| *camel.source.path.service* | Fully qualified service name from the protocol buffer descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.flowControlWindow* | The HTTP/2 flow control window size (MiB) | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessageSize* | The maximum message size allowed to be received/sent (MiB) | 4194304 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerStrategy* | This option specifies the top-level strategy for processing service requests and responses in streaming mode. If an aggregation strategy is selected, all requests will be accumulated in the list, then transferred to the flow, and the accumulated responses will be sent to the sender. If a propagation strategy is selected, request is sent to the stream, and the response will be immediately sent back to the sender. One of: [AGGREGATION] [PROPAGATION] | "PROPAGATION" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnCompleted* | Determines if onCompleted events should be pushed to the Camel route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnError* | Determines if onError events should be pushed to the Camel route. Exceptions will be set as message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentCallsPer Connection* | The maximum number of concurrent calls permitted for each incoming server connection | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationType* | Authentication method type in advance to the SSL/TLS negotiation One of: [NONE] [GOOGLE] [JWT] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtAlgorithm* | JSON Web Token sign algorithm One of: [HMAC256] [HMAC384] [HMAC512] | "HMAC256" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtIssuer* | JSON Web Token issuer | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtSecret* | JSON Web Token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtSubject* | JSON Web Token subject | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyCertChainResource* | The X.509 certificate chain file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPassword* | The PKCS#8 private key file password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyResource* | The PKCS#8 private key file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.negotiationType* | Identifies the security negotiation type used for HTTP/2 communication One of: [TLS] [PLAINTEXT_UPGRADE] [PLAINTEXT] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceAccountResource* | Service Account key file in JSON format resource link supported by the Google Cloud SDK | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCertCollectionResource* | The trusted certificates collection file resource in PEM format for verifying the remote endpoint's certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-guava-eventbus-kafka-connector/pom.xml b/connectors/camel-guava-eventbus-kafka-connector/pom.xml
index 3cfd36c..cae4a46 100644
--- a/connectors/camel-guava-eventbus-kafka-connector/pom.xml
+++ b/connectors/camel-guava-eventbus-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-guava-eventbus-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: guava-eventbus</name>
diff --git a/connectors/camel-guava-eventbus-kafka-connector/src/main/assembly/package.xml b/connectors/camel-guava-eventbus-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-guava-eventbus-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-guava-eventbus-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-guava-eventbus-kafka-connector/src/main/docs/camel-guava-eventbus-kafka-sink-connector.adoc b/connectors/camel-guava-eventbus-kafka-connector/src/main/docs/camel-guava-eventbus-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6c921ab
--- /dev/null
+++ b/connectors/camel-guava-eventbus-kafka-connector/src/main/docs/camel-guava-eventbus-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-guava-eventbus-kafka-connector-sink]]
+= camel-guava-eventbus-kafka-connector sink configuration
+
+When using camel-guava-eventbus-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-guava-eventbus-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-guava-eventbus sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.eventBusRef* | To lookup the Guava EventBus from the registry with the given name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventClass* | If used on the consumer side of the route, will filter events received from the EventBus to the instances of the class and superclasses of eventClass. Null value of this option is equal to setting it to the java.lang.Object i.e. the consumer will capture all messages incoming to the event bus. This option cannot be used together with listenerInterface option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.eventBus* | To use the given Guava EventBus instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-guava-eventbus-kafka-connector/src/main/docs/camel-guava-eventbus-kafka-source-connector.adoc b/connectors/camel-guava-eventbus-kafka-connector/src/main/docs/camel-guava-eventbus-kafka-source-connector.adoc
new file mode 100644
index 0000000..b9a322e
--- /dev/null
+++ b/connectors/camel-guava-eventbus-kafka-connector/src/main/docs/camel-guava-eventbus-kafka-source-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-guava-eventbus-kafka-connector-source]]
+= camel-guava-eventbus-kafka-connector source configuration
+
+When using camel-guava-eventbus-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-guava-eventbus-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-guava-eventbus source connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.eventBusRef* | To lookup the Guava EventBus from the registry with the given name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventClass* | If used on the consumer side of the route, will filter events received from the EventBus to the instances of the class and superclasses of eventClass. Null value of this option is equal to setting it to the java.lang.Object i.e. the consumer will capture all messages incoming to the event bus. This option cannot be used together with listenerInterface option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.eventBus* | To use the given Guava EventBus instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-atomicvalue-kafka-connector/pom.xml b/connectors/camel-hazelcast-atomicvalue-kafka-connector/pom.xml
index 251bb69..a00b153 100644
--- a/connectors/camel-hazelcast-atomicvalue-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-atomicvalue-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-atomicvalue-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-atomicvalue</name>
diff --git a/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/docs/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc b/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/docs/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..abf6a60
--- /dev/null
+++ b/connectors/camel-hazelcast-atomicvalue-kafka-connector/src/main/docs/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-atomicvalue-kafka-connector-sink]]
+= camel-hazelcast-atomicvalue-kafka-connector sink configuration
+
+When using camel-hazelcast-atomicvalue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-atomicvalue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-atomicvalue sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.hazelcast Mode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-instance-kafka-connector/pom.xml b/connectors/camel-hazelcast-instance-kafka-connector/pom.xml
index 0f548cb..82fd0f7 100644
--- a/connectors/camel-hazelcast-instance-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-instance-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-instance-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-instance</name>
diff --git a/connectors/camel-hazelcast-instance-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-instance-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-instance-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-instance-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-instance-kafka-connector/src/main/docs/camel-hazelcast-instance-kafka-source-connector.adoc b/connectors/camel-hazelcast-instance-kafka-connector/src/main/docs/camel-hazelcast-instance-kafka-source-connector.adoc
new file mode 100644
index 0000000..a7a9868
--- /dev/null
+++ b/connectors/camel-hazelcast-instance-kafka-connector/src/main/docs/camel-hazelcast-instance-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-instance-kafka-connector-source]]
+= camel-hazelcast-instance-kafka-connector source configuration
+
+When using camel-hazelcast-instance-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-instance-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-instance source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-list-kafka-connector/pom.xml b/connectors/camel-hazelcast-list-kafka-connector/pom.xml
index 8d5078d..53ec324 100644
--- a/connectors/camel-hazelcast-list-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-list-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-list-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-list</name>
diff --git a/connectors/camel-hazelcast-list-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-list-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-list-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-list-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-list-kafka-connector/src/main/docs/camel-hazelcast-list-kafka-sink-connector.adoc b/connectors/camel-hazelcast-list-kafka-connector/src/main/docs/camel-hazelcast-list-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3a41591
--- /dev/null
+++ b/connectors/camel-hazelcast-list-kafka-connector/src/main/docs/camel-hazelcast-list-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-list-kafka-connector-sink]]
+= camel-hazelcast-list-kafka-connector sink configuration
+
+When using camel-hazelcast-list-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-list-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-list sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-list-kafka-connector/src/main/docs/camel-hazelcast-list-kafka-source-connector.adoc b/connectors/camel-hazelcast-list-kafka-connector/src/main/docs/camel-hazelcast-list-kafka-source-connector.adoc
new file mode 100644
index 0000000..0001302
--- /dev/null
+++ b/connectors/camel-hazelcast-list-kafka-connector/src/main/docs/camel-hazelcast-list-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-list-kafka-connector-source]]
+= camel-hazelcast-list-kafka-connector source configuration
+
+When using camel-hazelcast-list-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-list-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-list source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-map-kafka-connector/pom.xml b/connectors/camel-hazelcast-map-kafka-connector/pom.xml
index 57d60be..6fe88eb 100644
--- a/connectors/camel-hazelcast-map-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-map-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-map-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-map</name>
diff --git a/connectors/camel-hazelcast-map-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-map-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-map-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-map-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-map-kafka-connector/src/main/docs/camel-hazelcast-map-kafka-sink-connector.adoc b/connectors/camel-hazelcast-map-kafka-connector/src/main/docs/camel-hazelcast-map-kafka-sink-connector.adoc
new file mode 100644
index 0000000..704a618
--- /dev/null
+++ b/connectors/camel-hazelcast-map-kafka-connector/src/main/docs/camel-hazelcast-map-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-map-kafka-connector-sink]]
+= camel-hazelcast-map-kafka-connector sink configuration
+
+When using camel-hazelcast-map-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-map sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-map-kafka-connector/src/main/docs/camel-hazelcast-map-kafka-source-connector.adoc b/connectors/camel-hazelcast-map-kafka-connector/src/main/docs/camel-hazelcast-map-kafka-source-connector.adoc
new file mode 100644
index 0000000..534710b
--- /dev/null
+++ b/connectors/camel-hazelcast-map-kafka-connector/src/main/docs/camel-hazelcast-map-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-map-kafka-connector-source]]
+= camel-hazelcast-map-kafka-connector source configuration
+
+When using camel-hazelcast-map-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-map source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-multimap-kafka-connector/pom.xml b/connectors/camel-hazelcast-multimap-kafka-connector/pom.xml
index 799558e..20f994a 100644
--- a/connectors/camel-hazelcast-multimap-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-multimap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-multimap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-multimap</name>
diff --git a/connectors/camel-hazelcast-multimap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-multimap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-multimap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-multimap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-multimap-kafka-connector/src/main/docs/camel-hazelcast-multimap-kafka-sink-connector.adoc b/connectors/camel-hazelcast-multimap-kafka-connector/src/main/docs/camel-hazelcast-multimap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e43da97
--- /dev/null
+++ b/connectors/camel-hazelcast-multimap-kafka-connector/src/main/docs/camel-hazelcast-multimap-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-multimap-kafka-connector-sink]]
+= camel-hazelcast-multimap-kafka-connector sink configuration
+
+When using camel-hazelcast-multimap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-multimap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-multimap sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-multimap-kafka-connector/src/main/docs/camel-hazelcast-multimap-kafka-source-connector.adoc b/connectors/camel-hazelcast-multimap-kafka-connector/src/main/docs/camel-hazelcast-multimap-kafka-source-connector.adoc
new file mode 100644
index 0000000..bad31ea
--- /dev/null
+++ b/connectors/camel-hazelcast-multimap-kafka-connector/src/main/docs/camel-hazelcast-multimap-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-multimap-kafka-connector-source]]
+= camel-hazelcast-multimap-kafka-connector source configuration
+
+When using camel-hazelcast-multimap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-multimap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-multimap source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-queue-kafka-connector/pom.xml b/connectors/camel-hazelcast-queue-kafka-connector/pom.xml
index a9a24cd..d30d76e 100644
--- a/connectors/camel-hazelcast-queue-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-queue-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-queue-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-queue</name>
diff --git a/connectors/camel-hazelcast-queue-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-queue-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-queue-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-queue-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-queue-kafka-connector/src/main/docs/camel-hazelcast-queue-kafka-sink-connector.adoc b/connectors/camel-hazelcast-queue-kafka-connector/src/main/docs/camel-hazelcast-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..04d863d
--- /dev/null
+++ b/connectors/camel-hazelcast-queue-kafka-connector/src/main/docs/camel-hazelcast-queue-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-queue-kafka-connector-sink]]
+= camel-hazelcast-queue-kafka-connector sink configuration
+
+When using camel-hazelcast-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-queue sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-queue-kafka-connector/src/main/docs/camel-hazelcast-queue-kafka-source-connector.adoc b/connectors/camel-hazelcast-queue-kafka-connector/src/main/docs/camel-hazelcast-queue-kafka-source-connector.adoc
new file mode 100644
index 0000000..b64099d
--- /dev/null
+++ b/connectors/camel-hazelcast-queue-kafka-connector/src/main/docs/camel-hazelcast-queue-kafka-source-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-hazelcast-queue-kafka-connector-source]]
+= camel-hazelcast-queue-kafka-connector source configuration
+
+When using camel-hazelcast-queue-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-queue source connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollingTimeout* | Define the polling timeout of the Queue consumer in Poll mode | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | Define the Pool size for Queue Consumer Executor | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueConsumerMode* | Define the Queue Consumer mode: Listen or Poll One of: [listen] [poll] | "Listen" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-replicatedmap-kafka-connector/pom.xml b/connectors/camel-hazelcast-replicatedmap-kafka-connector/pom.xml
index 1394e5f..009d7fd 100644
--- a/connectors/camel-hazelcast-replicatedmap-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-replicatedmap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-replicatedmap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-replicatedmap</name>
diff --git a/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/docs/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc b/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/docs/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f3e8662
--- /dev/null
+++ b/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/docs/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-replicatedmap-kafka-connector-sink]]
+= camel-hazelcast-replicatedmap-kafka-connector sink configuration
+
+When using camel-hazelcast-replicatedmap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-replicatedmap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-replicatedmap sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Mode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/docs/camel-hazelcast-replicatedmap-kafka-source-connector.adoc b/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/docs/camel-hazelcast-replicatedmap-kafka-source-connector.adoc
new file mode 100644
index 0000000..84b69ca
--- /dev/null
+++ b/connectors/camel-hazelcast-replicatedmap-kafka-connector/src/main/docs/camel-hazelcast-replicatedmap-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-replicatedmap-kafka-connector-source]]
+= camel-hazelcast-replicatedmap-kafka-connector source configuration
+
+When using camel-hazelcast-replicatedmap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-replicatedmap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-replicatedmap source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.bridge ErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Mode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-ringbuffer-kafka-connector/pom.xml b/connectors/camel-hazelcast-ringbuffer-kafka-connector/pom.xml
index 3893c12..18b7b08 100644
--- a/connectors/camel-hazelcast-ringbuffer-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-ringbuffer-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-ringbuffer-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-ringbuffer</name>
diff --git a/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/docs/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc b/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/docs/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0e16d31
--- /dev/null
+++ b/connectors/camel-hazelcast-ringbuffer-kafka-connector/src/main/docs/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-ringbuffer-kafka-connector-sink]]
+= camel-hazelcast-ringbuffer-kafka-connector sink configuration
+
+When using camel-hazelcast-ringbuffer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-ringbuffer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-ringbuffer sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-seda-kafka-connector/pom.xml b/connectors/camel-hazelcast-seda-kafka-connector/pom.xml
index c8ee782..100ec22 100644
--- a/connectors/camel-hazelcast-seda-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-seda-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-seda-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-seda</name>
diff --git a/connectors/camel-hazelcast-seda-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-seda-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-seda-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-seda-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-seda-kafka-connector/src/main/docs/camel-hazelcast-seda-kafka-sink-connector.adoc b/connectors/camel-hazelcast-seda-kafka-connector/src/main/docs/camel-hazelcast-seda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..28b5b27
--- /dev/null
+++ b/connectors/camel-hazelcast-seda-kafka-connector/src/main/docs/camel-hazelcast-seda-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-hazelcast-seda-kafka-connector-sink]]
+= camel-hazelcast-seda-kafka-connector sink configuration
+
+When using camel-hazelcast-seda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-seda sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.concurrentConsumers* | To use concurrent consumers polling from the SEDA queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onErrorDelay* | Milliseconds before consumer continues polling after an error has occurred. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pollTimeout* | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-seda-kafka-connector/src/main/docs/camel-hazelcast-seda-kafka-source-connector.adoc b/connectors/camel-hazelcast-seda-kafka-connector/src/main/docs/camel-hazelcast-seda-kafka-source-connector.adoc
new file mode 100644
index 0000000..25d9816
--- /dev/null
+++ b/connectors/camel-hazelcast-seda-kafka-connector/src/main/docs/camel-hazelcast-seda-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-hazelcast-seda-kafka-connector-source]]
+= camel-hazelcast-seda-kafka-connector source configuration
+
+When using camel-hazelcast-seda-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-seda source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | To use concurrent consumers polling from the SEDA queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onErrorDelay* | Milliseconds before consumer continues polling after an error has occurred. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-set-kafka-connector/pom.xml b/connectors/camel-hazelcast-set-kafka-connector/pom.xml
index 7a877c2..a5f7fcc 100644
--- a/connectors/camel-hazelcast-set-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-set-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-set-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-set</name>
diff --git a/connectors/camel-hazelcast-set-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-set-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-set-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-set-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-set-kafka-connector/src/main/docs/camel-hazelcast-set-kafka-sink-connector.adoc b/connectors/camel-hazelcast-set-kafka-connector/src/main/docs/camel-hazelcast-set-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7018724
--- /dev/null
+++ b/connectors/camel-hazelcast-set-kafka-connector/src/main/docs/camel-hazelcast-set-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-set-kafka-connector-sink]]
+= camel-hazelcast-set-kafka-connector sink configuration
+
+When using camel-hazelcast-set-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-set sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-set-kafka-connector/src/main/docs/camel-hazelcast-set-kafka-source-connector.adoc b/connectors/camel-hazelcast-set-kafka-connector/src/main/docs/camel-hazelcast-set-kafka-source-connector.adoc
new file mode 100644
index 0000000..370013c
--- /dev/null
+++ b/connectors/camel-hazelcast-set-kafka-connector/src/main/docs/camel-hazelcast-set-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-set-kafka-connector-source]]
+= camel-hazelcast-set-kafka-connector source configuration
+
+When using camel-hazelcast-set-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-set source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-topic-kafka-connector/pom.xml b/connectors/camel-hazelcast-topic-kafka-connector/pom.xml
index 09d0403..50a2c35 100644
--- a/connectors/camel-hazelcast-topic-kafka-connector/pom.xml
+++ b/connectors/camel-hazelcast-topic-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hazelcast-topic-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hazelcast-topic</name>
diff --git a/connectors/camel-hazelcast-topic-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hazelcast-topic-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hazelcast-topic-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hazelcast-topic-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hazelcast-topic-kafka-connector/src/main/docs/camel-hazelcast-topic-kafka-sink-connector.adoc b/connectors/camel-hazelcast-topic-kafka-connector/src/main/docs/camel-hazelcast-topic-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1edd971
--- /dev/null
+++ b/connectors/camel-hazelcast-topic-kafka-connector/src/main/docs/camel-hazelcast-topic-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-hazelcast-topic-kafka-connector-sink]]
+= camel-hazelcast-topic-kafka-connector sink configuration
+
+When using camel-hazelcast-topic-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-topic-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-topic sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reliable* | Define if the endpoint will use a reliable Topic struct or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hazelcast-topic-kafka-connector/src/main/docs/camel-hazelcast-topic-kafka-source-connector.adoc b/connectors/camel-hazelcast-topic-kafka-connector/src/main/docs/camel-hazelcast-topic-kafka-source-connector.adoc
new file mode 100644
index 0000000..f51294d
--- /dev/null
+++ b/connectors/camel-hazelcast-topic-kafka-connector/src/main/docs/camel-hazelcast-topic-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-hazelcast-topic-kafka-connector-source]]
+= camel-hazelcast-topic-kafka-connector source configuration
+
+When using camel-hazelcast-topic-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-topic-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-topic source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reliable* | Define if the endpoint will use a reliable Topic struct or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hbase-kafka-connector/pom.xml b/connectors/camel-hbase-kafka-connector/pom.xml
index 1ffcd38..864e791 100644
--- a/connectors/camel-hbase-kafka-connector/pom.xml
+++ b/connectors/camel-hbase-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hbase-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hbase</name>
diff --git a/connectors/camel-hbase-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hbase-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hbase-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hbase-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hbase-kafka-connector/src/main/docs/camel-hbase-kafka-sink-connector.adoc b/connectors/camel-hbase-kafka-connector/src/main/docs/camel-hbase-kafka-sink-connector.adoc
new file mode 100644
index 0000000..33768b0
--- /dev/null
+++ b/connectors/camel-hbase-kafka-connector/src/main/docs/camel-hbase-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-hbase-kafka-connector-sink]]
+= camel-hbase-kafka-connector sink configuration
+
+When using camel-hbase-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hbase sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.tableName* | The name of the table | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cellMappingStrategyFactory* | To use a custom CellMappingStrategyFactory that is responsible for mapping cells. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filters* | A list of filters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingStrategyClassName* | The class name of a custom mapping strategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingStrategyName* | The strategy to use for mapping Camel messages to HBase columns. Supported values: header, or body. One of: [header] [body] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rowMapping* | To map the key/values from the Map to a HBaseRow. The following keys is supported: rowId - The id of the row. This has limited use as the row usually changes per Exchange. rowType - The type to covert row id to. Supported operations: CamelHBaseScan. family - The column family. Supports a number suffix for referring to more than one columns. qualifier - The column qualifier. Supports a number suffix for referring to more than one columns. value - The value. Supports a number suffix for referring to more than one columns valueType - The value type. Supports a number suffix for referring to more than one columns. Supported operations: CamelHBaseGet, and CamelHBaseScan. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rowModel* | An instance of org.apache.camel.component.hbase.model.HBaseRow which describes how each row should be modeled | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userGroupInformation* | Defines privileges to communicate with HBase such as using kerberos. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxResults* | The maximum number of rows to scan. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.poolMaxSize* | Maximum number of references to keep for each table in the HTable pool. The default value is 10. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hbase-kafka-connector/src/main/docs/camel-hbase-kafka-source-connector.adoc b/connectors/camel-hbase-kafka-connector/src/main/docs/camel-hbase-kafka-source-connector.adoc
new file mode 100644
index 0000000..f72fb67
--- /dev/null
+++ b/connectors/camel-hbase-kafka-connector/src/main/docs/camel-hbase-kafka-source-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-hbase-kafka-connector-source]]
+= camel-hbase-kafka-connector source configuration
+
+When using camel-hbase-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hbase source connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.tableName* | The name of the table | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cellMappingStrategyFactory* | To use a custom CellMappingStrategyFactory that is responsible for mapping cells. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filters* | A list of filters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mappingStrategyClassName* | The class name of a custom mapping strategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mappingStrategyName* | The strategy to use for mapping Camel messages to HBase columns. Supported values: header, or body. One of: [header] [body] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rowMapping* | To map the key/values from the Map to a HBaseRow. The following keys is supported: rowId - The id of the row. This has limited use as the row usually changes per Exchange. rowType - The type to covert row id to. Supported operations: CamelHBaseScan. family - The column family. Supports a number suffix for referring to more than one columns. qualifier - The column qualifier. Supports a number suffix for referring to more than one columns. value - The value. Supports a number suffix for referring to more than one columns valueType - The value type. Supports a number suffix for referring to more than one columns. Supported operations: CamelHBaseGet, and CamelHBaseScan. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rowModel* | An instance of org.apache.camel.component.hbase.model.HBaseRow which describes how each row should be modeled | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userGroupInformation* | Defines privileges to communicate with HBase such as using kerberos. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.operation* | The HBase operation to perform One of: [CamelHBasePut] [CamelHBaseGet] [CamelHBaseScan] [CamelHBaseDelete] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remove* | If the option is true, Camel HBase Consumer will remove the rows which it processes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.removeHandler* | To use a custom HBaseRemoveHandler that is executed when a row is to be removed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.poolMaxSize* | Maximum number of references to keep for each table in the HTable pool. The default value is 10. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hdfs-kafka-connector/pom.xml b/connectors/camel-hdfs-kafka-connector/pom.xml
index 81bf128..85f4687 100644
--- a/connectors/camel-hdfs-kafka-connector/pom.xml
+++ b/connectors/camel-hdfs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hdfs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hdfs</name>
diff --git a/connectors/camel-hdfs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hdfs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hdfs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hdfs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hdfs-kafka-connector/src/main/docs/camel-hdfs-kafka-sink-connector.adoc b/connectors/camel-hdfs-kafka-connector/src/main/docs/camel-hdfs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1505f2b
--- /dev/null
+++ b/connectors/camel-hdfs-kafka-connector/src/main/docs/camel-hdfs-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-hdfs-kafka-connector-sink]]
+= camel-hdfs-kafka-connector sink configuration
+
+When using camel-hdfs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hdfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hdfs sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostName* | HDFS host to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | HDFS port to use | 8020 | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.path* | The directory path to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectOnStartup* | Whether to connect to the HDFS file system on starting the producer/consumer. If false then the connection is created on-demand. Notice that HDFS may take up till 15 minutes to establish a connection, as it has hardcoded 45 x 20 sec redelivery. By setting this option to false allows your application to startup, and not block for up till 15 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileSystemType* | Set to LOCAL to not use HDFS but local java.io.File instead. One of: [LOCAL] [HDFS] | "HDFS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileType* | The file type to use. For more details see Hadoop HDFS documentation about the various files types. One of: [NORMAL_FILE] [SEQUENCE_FILE] [MAP_FILE] [BLOOMMAP_FILE] [ARRAY_FILE] | "NORMAL_FILE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The type for the key in case of sequence or map files. One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "NULL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedNodes* | A comma separated list of named nodes (e.g. srv11.example.com:8020,srv12.example.com:8020) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.owner* | The file owner must match this owner for the consumer to pickup the file. Otherwise the file is skipped. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The type for the key in case of sequence or map files One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "BYTES" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.append* | Append to existing file. Notice that not all HDFS file systems support the append option. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.overwrite* | Whether to overwrite existing files with the same name | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockSize* | The size of the HDFS blocks | 67108864L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The buffer size used by HDFS | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.checkIdleInterval* | How often (time in millis) in to run the idle checker background task. This option is only in use if the splitter strategy is IDLE. | 500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunkSize* | When reading a normal file, this is split into chunks producing a message per chunk. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionCodec* | The compression codec to use One of: [DEFAULT] [GZIP] [BZIP2] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionType* | The compression type to use (is default not in use) One of: [NONE] [RECORD] [BLOCK] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.openedSuffix* | When a file is opened for reading/writing the file is renamed with this suffix to avoid to read it during the writing phase. | "opened" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readSuffix* | Once the file has been read is renamed with this suffix to avoid to read it again. | "read" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replication* | The HDFS replication factor | 3 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splitStrategy* | In the current version of Hadoop opening a file in append mode is disabled since it's not very reliable. So, for the moment, it's only possible to create new files. The Camel HDFS endpoint tries to solve this problem in this way: If the split strategy option has been defined, the hdfs path will be used as a directory and files will be created using the configured UuidGenerator. Every time a splitting condition is met, a new file is created. The splitStrategy option is defined as a string with the following syntax: splitStrategy=ST:value,ST:value,... where ST can be: BYTES a new file is created, and the old is closed when the number of written bytes is more than value MESSAGES a new file is created, and the old is closed when the number of written messages is more than value IDLE a new file is created, and the old is closed when no writing happened in the last value milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosConfigFileLocation* | The location of the kerb5.conf file (\https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosKeytabLocation* | The location of the keytab file used to authenticate with the kerberos nodes (contains pairs of kerberos principals and encrypted keys (which are derived from the Kerberos password)) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosUsername* | The username used to authenticate with the kerberos nodes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.jAASConfiguration* | To use the given configuration for security with JAAS. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.kerberosConfigFile* | To use kerberos authentication, set the value of the 'java.security.krb5.conf' environment variable to an existing file. If the environment variable is already set, warn if different than the specified parameter | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hdfs-kafka-connector/src/main/docs/camel-hdfs-kafka-source-connector.adoc b/connectors/camel-hdfs-kafka-connector/src/main/docs/camel-hdfs-kafka-source-connector.adoc
new file mode 100644
index 0000000..4dfe7ff
--- /dev/null
+++ b/connectors/camel-hdfs-kafka-connector/src/main/docs/camel-hdfs-kafka-source-connector.adoc
@@ -0,0 +1,77 @@
+// kafka-connector options: START
+[[camel-hdfs-kafka-connector-source]]
+= camel-hdfs-kafka-connector source configuration
+
+When using camel-hdfs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hdfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hdfs source connector supports 51 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.hostName* | HDFS host to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | HDFS port to use | 8020 | ConfigDef.Importance.MEDIUM
+| *camel.source.path.path* | The directory path to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectOnStartup* | Whether to connect to the HDFS file system on starting the producer/consumer. If false then the connection is created on-demand. Notice that HDFS may take up till 15 minutes to establish a connection, as it has hardcoded 45 x 20 sec redelivery. By setting this option to false allows your application to startup, and not block for up till 15 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileSystemType* | Set to LOCAL to not use HDFS but local java.io.File instead. One of: [LOCAL] [HDFS] | "HDFS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileType* | The file type to use. For more details see Hadoop HDFS documentation about the various files types. One of: [NORMAL_FILE] [SEQUENCE_FILE] [MAP_FILE] [BLOOMMAP_FILE] [ARRAY_FILE] | "NORMAL_FILE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyType* | The type for the key in case of sequence or map files. One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "NULL" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namedNodes* | A comma separated list of named nodes (e.g. srv11.example.com:8020,srv12.example.com:8020) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.owner* | The file owner must match this owner for the consumer to pickup the file. Otherwise the file is skipped. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueType* | The type for the key in case of sequence or map files One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "BYTES" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pattern* | The pattern used for scanning the directory | "*" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blockSize* | The size of the HDFS blocks | 67108864L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The buffer size used by HDFS | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkIdleInterval* | How often (time in millis) in to run the idle checker background task. This option is only in use if the splitter strategy is IDLE. | 500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunkSize* | When reading a normal file, this is split into chunks producing a message per chunk. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compressionCodec* | The compression codec to use One of: [DEFAULT] [GZIP] [BZIP2] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compressionType* | The compression type to use (is default not in use) One of: [NONE] [RECORD] [BLOCK] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.openedSuffix* | When a file is opened for reading/writing the file is renamed with this suffix to avoid to read it during the writing phase. | "opened" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readSuffix* | Once the file has been read is renamed with this suffix to avoid to read it again. | "read" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replication* | The HDFS replication factor | 3 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitStrategy* | In the current version of Hadoop opening a file in append mode is disabled since it's not very reliable. So, for the moment, it's only possible to create new files. The Camel HDFS endpoint tries to solve this problem in this way: If the split strategy option has been defined, the hdfs path will be used as a directory and files will be created using the configured UuidGenerator. Every time a splitting condition is met, a new file is created. The splitStrategy option is defined as a string with the following syntax: splitStrategy=ST:value,ST:value,... where ST can be: BYTES a new file is created, and the old is closed when the number of written bytes is more than value MESSAGES a new file is created, and the old is closed when the number of written messages is more than value IDLE a new file is created, and the old is closed when no writing happened in the last value milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default a limit of 100 is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Values can only be greater than 0. Notice: If this option is in use then the limit will be applied on the valid files. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosConfigFileLocation* | The location of the kerb5.conf file (\https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosKeytabLocation* | The location of the keytab file used to authenticate with the kerberos nodes (contains pairs of kerberos principals and encrypted keys (which are derived from the Kerberos password)) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosUsername* | The username used to authenticate with the kerberos nodes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.jAASConfiguration* | To use the given configuration for security with JAAS. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.kerberosConfigFile* | To use kerberos authentication, set the value of the 'java.security.krb5.conf' environment variable to an existing file. If the environment variable is already set, warn if different than the specified parameter | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hipchat-kafka-connector/pom.xml b/connectors/camel-hipchat-kafka-connector/pom.xml
index b4541ba..9470c34 100644
--- a/connectors/camel-hipchat-kafka-connector/pom.xml
+++ b/connectors/camel-hipchat-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-hipchat-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: hipchat</name>
diff --git a/connectors/camel-hipchat-kafka-connector/src/main/assembly/package.xml b/connectors/camel-hipchat-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-hipchat-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-hipchat-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-hipchat-kafka-connector/src/main/docs/camel-hipchat-kafka-sink-connector.adoc b/connectors/camel-hipchat-kafka-connector/src/main/docs/camel-hipchat-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cd5d926
--- /dev/null
+++ b/connectors/camel-hipchat-kafka-connector/src/main/docs/camel-hipchat-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hipchat-kafka-connector-sink]]
+= camel-hipchat-kafka-connector sink configuration
+
+When using camel-hipchat-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hipchat-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hipchat sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol for the hipchat server, such as http. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | The host for the hipchat server, such as api.hipchat.com | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port for the hipchat server. Is by default 80. | "80" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authToken* | OAuth 2 auth token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumeUsers* | Username(s) when consuming messages from the hiptchat server. Multiple user names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | The CloseableHttpClient reference from registry to be used during API HTTP requests. | "CloseableHttpClient default from HttpClient library" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-hipchat-kafka-connector/src/main/docs/camel-hipchat-kafka-source-connector.adoc b/connectors/camel-hipchat-kafka-connector/src/main/docs/camel-hipchat-kafka-source-connector.adoc
new file mode 100644
index 0000000..9f5a401
--- /dev/null
+++ b/connectors/camel-hipchat-kafka-connector/src/main/docs/camel-hipchat-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-hipchat-kafka-connector-source]]
+= camel-hipchat-kafka-connector source configuration
+
+When using camel-hipchat-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hipchat-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hipchat source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol for the hipchat server, such as http. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | The host for the hipchat server, such as api.hipchat.com | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port for the hipchat server. Is by default 80. | "80" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authToken* | OAuth 2 auth token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeUsers* | Username(s) when consuming messages from the hiptchat server. Multiple user names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClient* | The CloseableHttpClient reference from registry to be used during API HTTP requests. | "CloseableHttpClient default from HttpClient library" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-http-kafka-connector/pom.xml b/connectors/camel-http-kafka-connector/pom.xml
index 8748a2c..1d4f2bd 100644
--- a/connectors/camel-http-kafka-connector/pom.xml
+++ b/connectors/camel-http-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-http-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: http</name>
diff --git a/connectors/camel-http-kafka-connector/src/main/assembly/package.xml b/connectors/camel-http-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-http-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-http-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-http-kafka-connector/src/main/docs/camel-http-kafka-sink-connector.adoc b/connectors/camel-http-kafka-connector/src/main/docs/camel-http-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6969b4a
--- /dev/null
+++ b/connectors/camel-http-kafka-connector/src/main/docs/camel-http-kafka-sink-connector.adoc
@@ -0,0 +1,98 @@
+// kafka-connector options: START
+[[camel-http-kafka-connector-sink]]
+= camel-http-kafka-connector sink configuration
+
+When using camel-http-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-http sink connector supports 72 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The url of the HTTP endpoint to call. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearExpiredCookies* | Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expired. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyHeaders* | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.customHostHeader* | To use custom host header for producer. When not set in query will be ignored. When set will override host header derived from url. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMethod* | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. One of: [GET] [POST] [PUT] [DELETE] [HEAD] [OPTIONS] [TRACE] [PATCH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreResponseBody* | If this option is true, The http producer won't read response body and cache the input stream | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieStore* | To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). If a cookieHandler is set then the cookie store is also forced to be a noop cookie store as cookie handling is then performed by the cookieHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteWithBody* | Whether the HTTP DELETE should include the message body or not. By default HTTP DELETE do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.getWithBody* | Whether the HTTP GET should include the message body or not. By default HTTP GET do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientBuilder* | Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConnectionManager* | To use a custom HttpClientConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | Sets a custom HttpClient to be used by the producer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientConfigurer* | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientOptions* | To configure the HttpClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpContext* | To use a custom HttpContext instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSystemProperties* | To use System Properties as fallback for configuration | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Proxy authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Proxy authentication host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Proxy authentication method to use One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Proxy authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPort* | Proxy authentication port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthScheme* | Proxy authentication scheme to use One of: [http] [https] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Proxy authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | Proxy hostname to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Proxy port to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authDomain* | Authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationPreemptive* | If this option is true, camel-http sends preemptive basic authentication to the server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authHost* | Authentication host to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethod* | Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethodPriority* | Which authentication method to prioritize to use, either as Basic, Digest or NTLM. One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authPassword* | Authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authUsername* | Authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.util.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.cookieStore* | To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.clientConnectionManager* | To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectionTimeToLive* | The time for connection to live, the time unit is millisecond, the default value is always keep alive. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpClientConfigurer* | To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpConfiguration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpContext* | To use a custom org.apache.http.protocol.HttpContext when executing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.support.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectionRequestTimeout* | The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectTimeout* | Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.socketTimeout* | Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-https-kafka-connector/pom.xml b/connectors/camel-https-kafka-connector/pom.xml
index fd2b8c6..6d66e0d 100644
--- a/connectors/camel-https-kafka-connector/pom.xml
+++ b/connectors/camel-https-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-https-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: https</name>
diff --git a/connectors/camel-https-kafka-connector/src/main/assembly/package.xml b/connectors/camel-https-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-https-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-https-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-https-kafka-connector/src/main/docs/camel-https-kafka-sink-connector.adoc b/connectors/camel-https-kafka-connector/src/main/docs/camel-https-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a058fc7
--- /dev/null
+++ b/connectors/camel-https-kafka-connector/src/main/docs/camel-https-kafka-sink-connector.adoc
@@ -0,0 +1,98 @@
+// kafka-connector options: START
+[[camel-https-kafka-connector-sink]]
+= camel-https-kafka-connector sink configuration
+
+When using camel-https-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-https-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-https sink connector supports 72 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The url of the HTTP endpoint to call. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearExpiredCookies* | Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expired. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyHeaders* | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.customHostHeader* | To use custom host header for producer. When not set in query will be ignored. When set will override host header derived from url. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMethod* | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. One of: [GET] [POST] [PUT] [DELETE] [HEAD] [OPTIONS] [TRACE] [PATCH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreResponseBody* | If this option is true, The http producer won't read response body and cache the input stream | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieStore* | To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). If a cookieHandler is set then the cookie store is also forced to be a noop cookie store as cookie handling is then performed by the cookieHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteWithBody* | Whether the HTTP DELETE should include the message body or not. By default HTTP DELETE do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.getWithBody* | Whether the HTTP GET should include the message body or not. By default HTTP GET do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientBuilder* | Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConnectionManager* | To use a custom HttpClientConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | Sets a custom HttpClient to be used by the producer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientConfigurer* | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientOptions* | To configure the HttpClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpContext* | To use a custom HttpContext instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSystemProperties* | To use System Properties as fallback for configuration | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Proxy authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Proxy authentication host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Proxy authentication method to use One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Proxy authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPort* | Proxy authentication port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthScheme* | Proxy authentication scheme to use One of: [http] [https] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Proxy authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | Proxy hostname to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Proxy port to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authDomain* | Authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationPreemptive* | If this option is true, camel-http sends preemptive basic authentication to the server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authHost* | Authentication host to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethod* | Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethodPriority* | Which authentication method to prioritize to use, either as Basic, Digest or NTLM. One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authPassword* | Authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authUsername* | Authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.util.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.cookieStore* | To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.clientConnectionManager* | To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectionTimeToLive* | The time for connection to live, the time unit is millisecond, the default value is always keep alive. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpClientConfigurer* | To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpConfiguration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpContext* | To use a custom org.apache.http.protocol.HttpContext when executing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.support.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectionRequestTimeout* | The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectTimeout* | Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.socketTimeout* | Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-iec60870-client-kafka-connector/pom.xml b/connectors/camel-iec60870-client-kafka-connector/pom.xml
index 1a7f71a..d1d9841 100644
--- a/connectors/camel-iec60870-client-kafka-connector/pom.xml
+++ b/connectors/camel-iec60870-client-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-iec60870-client-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: iec60870-client</name>
diff --git a/connectors/camel-iec60870-client-kafka-connector/src/main/assembly/package.xml b/connectors/camel-iec60870-client-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-iec60870-client-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-iec60870-client-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-iec60870-client-kafka-connector/src/main/docs/camel-iec60870-client-kafka-sink-connector.adoc b/connectors/camel-iec60870-client-kafka-connector/src/main/docs/camel-iec60870-client-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d7aca49
--- /dev/null
+++ b/connectors/camel-iec60870-client-kafka-connector/src/main/docs/camel-iec60870-client-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-iec60870-client-kafka-connector-sink]]
+= camel-iec60870-client-kafka-connector sink configuration
+
+When using camel-iec60870-client-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-client sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-iec60870-client-kafka-connector/src/main/docs/camel-iec60870-client-kafka-source-connector.adoc b/connectors/camel-iec60870-client-kafka-connector/src/main/docs/camel-iec60870-client-kafka-source-connector.adoc
new file mode 100644
index 0000000..76c457d
--- /dev/null
+++ b/connectors/camel-iec60870-client-kafka-connector/src/main/docs/camel-iec60870-client-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-iec60870-client-kafka-connector-source]]
+= camel-iec60870-client-kafka-connector source configuration
+
+When using camel-iec60870-client-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-client source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-iec60870-server-kafka-connector/pom.xml b/connectors/camel-iec60870-server-kafka-connector/pom.xml
index 6bdedda..d3d8a08 100644
--- a/connectors/camel-iec60870-server-kafka-connector/pom.xml
+++ b/connectors/camel-iec60870-server-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-iec60870-server-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: iec60870-server</name>
diff --git a/connectors/camel-iec60870-server-kafka-connector/src/main/assembly/package.xml b/connectors/camel-iec60870-server-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-iec60870-server-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-iec60870-server-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-iec60870-server-kafka-connector/src/main/docs/camel-iec60870-server-kafka-sink-connector.adoc b/connectors/camel-iec60870-server-kafka-connector/src/main/docs/camel-iec60870-server-kafka-sink-connector.adoc
new file mode 100644
index 0000000..72cd466
--- /dev/null
+++ b/connectors/camel-iec60870-server-kafka-connector/src/main/docs/camel-iec60870-server-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-iec60870-server-kafka-connector-sink]]
+= camel-iec60870-server-kafka-connector sink configuration
+
+When using camel-iec60870-server-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-server sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterNonExecute* | Filter out all requests which don't have the execute bit set | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-iec60870-server-kafka-connector/src/main/docs/camel-iec60870-server-kafka-source-connector.adoc b/connectors/camel-iec60870-server-kafka-connector/src/main/docs/camel-iec60870-server-kafka-source-connector.adoc
new file mode 100644
index 0000000..7efea79
--- /dev/null
+++ b/connectors/camel-iec60870-server-kafka-connector/src/main/docs/camel-iec60870-server-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-iec60870-server-kafka-connector-source]]
+= camel-iec60870-server-kafka-connector source configuration
+
+When using camel-iec60870-server-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-server source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterNonExecute* | Filter out all requests which don't have the execute bit set | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-cache-kafka-connector/pom.xml b/connectors/camel-ignite-cache-kafka-connector/pom.xml
index e5ae1ff..3112951 100644
--- a/connectors/camel-ignite-cache-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-cache-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-cache-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-cache</name>
diff --git a/connectors/camel-ignite-cache-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-cache-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-cache-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-cache-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-cache-kafka-connector/src/main/docs/camel-ignite-cache-kafka-sink-connector.adoc b/connectors/camel-ignite-cache-kafka-connector/src/main/docs/camel-ignite-cache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f9d86ff
--- /dev/null
+++ b/connectors/camel-ignite-cache-kafka-connector/src/main/docs/camel-ignite-cache-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-ignite-cache-kafka-connector-sink]]
+= camel-ignite-cache-kafka-connector sink configuration
+
+When using camel-ignite-cache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-cache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-cache sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The cache name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | The Query to execute, only needed for operations that require it, and for the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cachePeekMode* | The CachePeekMode, only needed for operations that require it (IgniteCacheOperation#SIZE). One of: [ALL] [NEAR] [PRIMARY] [BACKUP] [ONHEAP] [OFFHEAP] | "ALL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfInexistentCache* | Whether to fail the initialization if the cache doesn't exist. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The cache operation to invoke. Possible values: GET, PUT, REMOVE, SIZE, REBALANCE, QUERY, CLEAR. One of: [GET] [PUT] [REMOVE] [SIZE] [REBALANCE] [QUERY] [CLEAR] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-cache-kafka-connector/src/main/docs/camel-ignite-cache-kafka-source-connector.adoc b/connectors/camel-ignite-cache-kafka-connector/src/main/docs/camel-ignite-cache-kafka-source-connector.adoc
new file mode 100644
index 0000000..b79dc14
--- /dev/null
+++ b/connectors/camel-ignite-cache-kafka-connector/src/main/docs/camel-ignite-cache-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-ignite-cache-kafka-connector-source]]
+= camel-ignite-cache-kafka-connector source configuration
+
+When using camel-ignite-cache-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-cache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-cache source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The cache name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoUnsubscribe* | Whether auto unsubscribe is enabled in the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireExistingQueryResults* | Whether to process existing results that match the query. Used on initialization of the Continuous Query Consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oneExchangePerUpdate* | Whether to pack each update in an individual Exchange, even if multiple updates are received in one batch. Only used by the Continuous Query Consumer. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageSize* | The page size. Only used by the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_PAGE_SIZE | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The Query to execute, only needed for operations that require it, and for the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remoteFilter* | The remote filter, only used by the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeInterval* | The time interval for the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_TIME_INTERVAL | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-compute-kafka-connector/pom.xml b/connectors/camel-ignite-compute-kafka-connector/pom.xml
index d9b2372..4ef882f 100644
--- a/connectors/camel-ignite-compute-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-compute-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-compute-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-compute</name>
diff --git a/connectors/camel-ignite-compute-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-compute-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-compute-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-compute-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-compute-kafka-connector/src/main/docs/camel-ignite-compute-kafka-sink-connector.adoc b/connectors/camel-ignite-compute-kafka-connector/src/main/docs/camel-ignite-compute-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8a39f9b
--- /dev/null
+++ b/connectors/camel-ignite-compute-kafka-connector/src/main/docs/camel-ignite-compute-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-ignite-compute-kafka-connector-sink]]
+= camel-ignite-compute-kafka-connector sink configuration
+
+When using camel-ignite-compute-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-compute-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-compute sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointId* | The endpoint ID (not used). | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clusterGroupExpression* | An expression that returns the Cluster Group for the IgniteCompute instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.computeName* | The name of the compute job, which will be set via IgniteCompute#withName(String). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.executionType* | The compute operation to perform. Possible values: CALL, BROADCAST, APPLY, EXECUTE, RUN, AFFINITY_CALL, AFFINITY_RUN. The component expects different payload types depending on the operation. One of: [CALL] [BROADCAST] [APPLY] [EXECUTE] [RUN] [AFFINITY_CALL] [AFFINITY_RUN] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.taskName* | The task name, only applicable if using the IgniteComputeExecutionType#EXECUTE execution type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeoutMillis* | The timeout interval for triggered jobs, in milliseconds, which will be set via IgniteCompute#withTimeout(long). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-events-kafka-connector/pom.xml b/connectors/camel-ignite-events-kafka-connector/pom.xml
index 631a75d..aa78f8f 100644
--- a/connectors/camel-ignite-events-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-events-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-events-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-events</name>
diff --git a/connectors/camel-ignite-events-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-events-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-events-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-events-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-events-kafka-connector/src/main/docs/camel-ignite-events-kafka-source-connector.adoc b/connectors/camel-ignite-events-kafka-connector/src/main/docs/camel-ignite-events-kafka-source-connector.adoc
new file mode 100644
index 0000000..34c60ef
--- /dev/null
+++ b/connectors/camel-ignite-events-kafka-connector/src/main/docs/camel-ignite-events-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-ignite-events-kafka-connector-source]]
+= camel-ignite-events-kafka-connector source configuration
+
+When using camel-ignite-events-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-events-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-events source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.endpointId* | The endpoint ID (not used). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusterGroupExpression* | The cluster group expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.events* | The event types to subscribe to as a comma-separated string of event constants as defined in EventType. For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED. | "EVTS_ALL" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-idgen-kafka-connector/pom.xml b/connectors/camel-ignite-idgen-kafka-connector/pom.xml
index e76c2c7..9216bf1 100644
--- a/connectors/camel-ignite-idgen-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-idgen-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-idgen-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-idgen</name>
diff --git a/connectors/camel-ignite-idgen-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-idgen-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-idgen-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-idgen-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-idgen-kafka-connector/src/main/docs/camel-ignite-idgen-kafka-sink-connector.adoc b/connectors/camel-ignite-idgen-kafka-connector/src/main/docs/camel-ignite-idgen-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d5eef07
--- /dev/null
+++ b/connectors/camel-ignite-idgen-kafka-connector/src/main/docs/camel-ignite-idgen-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-ignite-idgen-kafka-connector-sink]]
+= camel-ignite-idgen-kafka-connector sink configuration
+
+When using camel-ignite-idgen-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-idgen-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-idgen sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The sequence name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batchSize* | The batch size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialValue* | The initial value. | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to invoke on the Ignite ID Generator. Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message. Possible values: ADD_AND_GET, GET, GET_AND_ADD, GET_AND_INCREMENT, INCREMENT_AND_GET. One of: [ADD_AND_GET] [GET] [GET_AND_ADD] [GET_AND_INCREMENT] [INCREMENT_AND_GET] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-messaging-kafka-connector/pom.xml b/connectors/camel-ignite-messaging-kafka-connector/pom.xml
index 5538a4c..838f43a 100644
--- a/connectors/camel-ignite-messaging-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-messaging-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-messaging-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-messaging</name>
diff --git a/connectors/camel-ignite-messaging-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-messaging-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-messaging-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-messaging-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-messaging-kafka-connector/src/main/docs/camel-ignite-messaging-kafka-sink-connector.adoc b/connectors/camel-ignite-messaging-kafka-connector/src/main/docs/camel-ignite-messaging-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d8d0adb
--- /dev/null
+++ b/connectors/camel-ignite-messaging-kafka-connector/src/main/docs/camel-ignite-messaging-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-ignite-messaging-kafka-connector-sink]]
+= camel-ignite-messaging-kafka-connector sink configuration
+
+When using camel-ignite-messaging-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-messaging sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | The topic name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clusterGroupExpression* | The cluster group expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendMode* | The send mode to use. Possible values: UNORDERED, ORDERED. One of: [ORDERED] [UNORDERED] | "UNORDERED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout for the send operation when using ordered messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite Configuration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-messaging-kafka-connector/src/main/docs/camel-ignite-messaging-kafka-source-connector.adoc b/connectors/camel-ignite-messaging-kafka-connector/src/main/docs/camel-ignite-messaging-kafka-source-connector.adoc
new file mode 100644
index 0000000..ec28cf9
--- /dev/null
+++ b/connectors/camel-ignite-messaging-kafka-connector/src/main/docs/camel-ignite-messaging-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-ignite-messaging-kafka-connector-source]]
+= camel-ignite-messaging-kafka-connector source configuration
+
+When using camel-ignite-messaging-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-messaging source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | The topic name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusterGroupExpression* | The cluster group expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite Configuration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-queue-kafka-connector/pom.xml b/connectors/camel-ignite-queue-kafka-connector/pom.xml
index 073a311..1494332 100644
--- a/connectors/camel-ignite-queue-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-queue-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-queue-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-queue</name>
diff --git a/connectors/camel-ignite-queue-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-queue-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-queue-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-queue-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-queue-kafka-connector/src/main/docs/camel-ignite-queue-kafka-sink-connector.adoc b/connectors/camel-ignite-queue-kafka-connector/src/main/docs/camel-ignite-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..525e4c3
--- /dev/null
+++ b/connectors/camel-ignite-queue-kafka-connector/src/main/docs/camel-ignite-queue-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-ignite-queue-kafka-connector-sink]]
+= camel-ignite-queue-kafka-connector sink configuration
+
+When using camel-ignite-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-queue sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The queue name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.capacity* | The queue capacity. Default: non-bounded. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to invoke on the Ignite Queue. Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message. Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY, DRAIN, ELEMENT, PEEK, OFFER, POLL, TAKE, PUT. One of: [CONTAINS] [ADD] [SIZE] [REMOVE] [ITERATOR] [CLEAR] [RETAIN_ALL] [ARRAY] [DRAIN] [ELEMENT] [PEEK] [OFFER] [POLL] [TAKE] [PUT] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeoutMillis* | The queue timeout in milliseconds. Default: no timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ignite-set-kafka-connector/pom.xml b/connectors/camel-ignite-set-kafka-connector/pom.xml
index f25e69e..56f31e5 100644
--- a/connectors/camel-ignite-set-kafka-connector/pom.xml
+++ b/connectors/camel-ignite-set-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ignite-set-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ignite-set</name>
diff --git a/connectors/camel-ignite-set-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ignite-set-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ignite-set-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ignite-set-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ignite-set-kafka-connector/src/main/docs/camel-ignite-set-kafka-sink-connector.adoc b/connectors/camel-ignite-set-kafka-connector/src/main/docs/camel-ignite-set-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5d5b32c
--- /dev/null
+++ b/connectors/camel-ignite-set-kafka-connector/src/main/docs/camel-ignite-set-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-ignite-set-kafka-connector-sink]]
+= camel-ignite-set-kafka-connector sink configuration
+
+When using camel-ignite-set-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-set sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The set name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.configuration* | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to invoke on the Ignite Set. Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message. Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY.The set operation to perform. One of: [CONTAINS] [ADD] [SIZE] [REMOVE] [ITERATOR] [CLEAR] [RETAIN_ALL] [ARRAY] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-imap-kafka-connector/pom.xml b/connectors/camel-imap-kafka-connector/pom.xml
index f0dc52d..b9dd7a6 100644
--- a/connectors/camel-imap-kafka-connector/pom.xml
+++ b/connectors/camel-imap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-imap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: imap</name>
diff --git a/connectors/camel-imap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-imap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-imap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-imap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-imap-kafka-connector/src/main/docs/camel-imap-kafka-sink-connector.adoc b/connectors/camel-imap-kafka-connector/src/main/docs/camel-imap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2c92059
--- /dev/null
+++ b/connectors/camel-imap-kafka-connector/src/main/docs/camel-imap-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-imap-kafka-connector-sink]]
+= camel-imap-kafka-connector sink configuration
+
+When using camel-imap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imap sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-imap-kafka-connector/src/main/docs/camel-imap-kafka-source-connector.adoc b/connectors/camel-imap-kafka-connector/src/main/docs/camel-imap-kafka-source-connector.adoc
new file mode 100644
index 0000000..a1d9f3b
--- /dev/null
+++ b/connectors/camel-imap-kafka-connector/src/main/docs/camel-imap-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-imap-kafka-connector-source]]
+= camel-imap-kafka-connector source configuration
+
+When using camel-imap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imap source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-imaps-kafka-connector/pom.xml b/connectors/camel-imaps-kafka-connector/pom.xml
index 9879442..a2a67ba 100644
--- a/connectors/camel-imaps-kafka-connector/pom.xml
+++ b/connectors/camel-imaps-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-imaps-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: imaps</name>
diff --git a/connectors/camel-imaps-kafka-connector/src/main/assembly/package.xml b/connectors/camel-imaps-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-imaps-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-imaps-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-imaps-kafka-connector/src/main/docs/camel-imaps-kafka-sink-connector.adoc b/connectors/camel-imaps-kafka-connector/src/main/docs/camel-imaps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7a49be4
--- /dev/null
+++ b/connectors/camel-imaps-kafka-connector/src/main/docs/camel-imaps-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-imaps-kafka-connector-sink]]
+= camel-imaps-kafka-connector sink configuration
+
+When using camel-imaps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imaps sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-imaps-kafka-connector/src/main/docs/camel-imaps-kafka-source-connector.adoc b/connectors/camel-imaps-kafka-connector/src/main/docs/camel-imaps-kafka-source-connector.adoc
new file mode 100644
index 0000000..c4042dd
--- /dev/null
+++ b/connectors/camel-imaps-kafka-connector/src/main/docs/camel-imaps-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-imaps-kafka-connector-source]]
+= camel-imaps-kafka-connector source configuration
+
+When using camel-imaps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imaps source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-infinispan-kafka-connector/pom.xml b/connectors/camel-infinispan-kafka-connector/pom.xml
index 4f755f2..ea29d44 100644
--- a/connectors/camel-infinispan-kafka-connector/pom.xml
+++ b/connectors/camel-infinispan-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-infinispan-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: infinispan</name>
diff --git a/connectors/camel-infinispan-kafka-connector/src/main/assembly/package.xml b/connectors/camel-infinispan-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-infinispan-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-infinispan-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-infinispan-kafka-connector/src/main/docs/camel-infinispan-kafka-sink-connector.adoc b/connectors/camel-infinispan-kafka-connector/src/main/docs/camel-infinispan-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bca4dd5
--- /dev/null
+++ b/connectors/camel-infinispan-kafka-connector/src/main/docs/camel-infinispan-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-infinispan-kafka-connector-sink]]
+= camel-infinispan-kafka-connector sink configuration
+
+When using camel-infinispan-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-infinispan-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-infinispan sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The cache to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.hosts* | Specifies the host of the cache on Infinispan instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryBuilder* | Specifies the query builder. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. One of: [PUT] [PUTASYNC] [PUTALL] [PUTALLASYNC] [PUTIFABSENT] [PUTIFABSENTASYNC] [GET] [GETORDEFAULT] [CONTAINSKEY] [CONTAINSVALUE] [REMOVE] [REMOVEASYNC] [REPLACE] [REPLACEASYNC] [SIZE] [CLEAR] [CLEARASYNC] [QUERY] [STATS] [COMPUTE] [COMPUTEASYNC] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheContainer* | Specifies the cache Container to connect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheContainerConfiguration* | The CacheContainer configuration. Uses if the cacheContainer is not defined. Must be the following types: org.infinispan.client.hotrod.configuration.Configuration - for remote cache interaction configuration; org.infinispan.configuration.cache.Configuration - for embedded cache interaction configuration; | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationProperties* | Implementation specific properties for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flags* | A comma separated list of Flag to be applied by default on each cache invocation, not applicable to remote caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remappingFunction* | Set a specific remappingFunction to use in a compute operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | Store the operation result in a header instead of the message body. By default, resultHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If resultHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. This value can be overridden by an in message header named: CamelInfinispanOperationResultHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.cacheContainer* | Default Cache container | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-infinispan-kafka-connector/src/main/docs/camel-infinispan-kafka-source-connector.adoc b/connectors/camel-infinispan-kafka-connector/src/main/docs/camel-infinispan-kafka-source-connector.adoc
new file mode 100644
index 0000000..bcfcb14
--- /dev/null
+++ b/connectors/camel-infinispan-kafka-connector/src/main/docs/camel-infinispan-kafka-source-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-infinispan-kafka-connector-source]]
+= camel-infinispan-kafka-connector source configuration
+
+When using camel-infinispan-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-infinispan-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-infinispan source connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The cache to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.hosts* | Specifies the host of the cache on Infinispan instance | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queryBuilder* | Specifies the query builder. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusteredListener* | If true, the listener will be installed for the entire cluster | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.command* | The operation to perform. | "PUT" | ConfigDef.Importance.LOW
+| *camel.source.endpoint.customListener* | Returns the custom listener in use, if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventTypes* | Specifies the set of event types to register by the consumer. Multiple event can be separated by comma. The possible event types are: CACHE_ENTRY_ACTIVATED, CACHE_ENTRY_PASSIVATED, CACHE_ENTRY_VISITED, CACHE_ENTRY_LOADED, CACHE_ENTRY_EVICTED, CACHE_ENTRY_CREATED, CACHE_ENTRY_REMOVED, CACHE_ENTRY_MODIFIED, TRANSACTION_COMPLETED, TRANSACTION_REGISTERED, CACHE_ENTRY_INVALIDATED, DATA_REHASHED, TOPOLOGY_CHANGED, PARTITION_STATUS_CHANGED | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | If true, the consumer will receive notifications synchronously | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheContainer* | Specifies the cache Container to connect | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheContainerConfiguration* | The CacheContainer configuration. Uses if the cacheContainer is not defined. Must be the following types: org.infinispan.client.hotrod.configuration.Configuration - for remote cache interaction configuration; org.infinispan.configuration.cache.Configuration - for embedded cache interaction configuration; | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationProperties* | Implementation specific properties for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flags* | A comma separated list of Flag to be applied by default on each cache invocation, not applicable to remote caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remappingFunction* | Set a specific remappingFunction to use in a compute operation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | Store the operation result in a header instead of the message body. By default, resultHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If resultHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. This value can be overridden by an in message header named: CamelInfinispanOperationResultHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.cacheContainer* | Default Cache container | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-influxdb-kafka-connector/pom.xml b/connectors/camel-influxdb-kafka-connector/pom.xml
index 514d275..5d0786f 100644
--- a/connectors/camel-influxdb-kafka-connector/pom.xml
+++ b/connectors/camel-influxdb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-influxdb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: influxdb</name>
diff --git a/connectors/camel-influxdb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-influxdb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-influxdb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-influxdb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-influxdb-kafka-connector/src/main/docs/camel-influxdb-kafka-sink-connector.adoc b/connectors/camel-influxdb-kafka-connector/src/main/docs/camel-influxdb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..801f017
--- /dev/null
+++ b/connectors/camel-influxdb-kafka-connector/src/main/docs/camel-influxdb-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-influxdb-kafka-connector-sink]]
+= camel-influxdb-kafka-connector sink configuration
+
+When using camel-influxdb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-influxdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-influxdb sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionBean* | Connection to the influx database, of class InfluxDB.class | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batch* | Define if this operation is a batch operation or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseName* | The name of the database where the time series will be stored | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Define if this operation is an insert or a query | "insert" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | Define the query in case of operation query | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retentionPolicy* | The string that defines the retention policy to the data created by the endpoint | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.influxdb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.influxdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-iota-kafka-connector/pom.xml b/connectors/camel-iota-kafka-connector/pom.xml
index 82ed798..df2f0fc 100644
--- a/connectors/camel-iota-kafka-connector/pom.xml
+++ b/connectors/camel-iota-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-iota-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: iota</name>
diff --git a/connectors/camel-iota-kafka-connector/src/main/assembly/package.xml b/connectors/camel-iota-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-iota-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-iota-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-iota-kafka-connector/src/main/docs/camel-iota-kafka-sink-connector.adoc b/connectors/camel-iota-kafka-connector/src/main/docs/camel-iota-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ac52c1c
--- /dev/null
+++ b/connectors/camel-iota-kafka-connector/src/main/docs/camel-iota-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-iota-kafka-connector-sink]]
+= camel-iota-kafka-connector sink configuration
+
+When using camel-iota-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iota-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iota sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Component name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.depth* | The depth determines how deep the tangle is analysed for getting Tips | "9" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.minWeightMagnitude* | The minWeightMagnitude is the minimum number of zeroes that a proof-of-work output/transaction hash must end with to be considered valid by full nodes | "14" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Which operation to perform, one of: sendTransfer, getNewAddress, getTransfers One of: [sendTransfer] [getNewAddress] [getTransfers] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.tag* | TAG | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.url* | Node url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityLevel* | Address security level | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.iota.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iota.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ipfs-kafka-connector/pom.xml b/connectors/camel-ipfs-kafka-connector/pom.xml
index 6b64ece..72da5b6 100644
--- a/connectors/camel-ipfs-kafka-connector/pom.xml
+++ b/connectors/camel-ipfs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ipfs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ipfs</name>
diff --git a/connectors/camel-ipfs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ipfs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ipfs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ipfs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ipfs-kafka-connector/src/main/docs/camel-ipfs-kafka-sink-connector.adoc b/connectors/camel-ipfs-kafka-connector/src/main/docs/camel-ipfs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1b4c181
--- /dev/null
+++ b/connectors/camel-ipfs-kafka-connector/src/main/docs/camel-ipfs-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-ipfs-kafka-connector-sink]]
+= camel-ipfs-kafka-connector sink configuration
+
+When using camel-ipfs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ipfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ipfs sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.ipfsCmd* | The ipfs command One of: [add] [cat] [get] [version] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outdir* | The ipfs output directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.ipfsHost* | The ipfs host | "127.0.0.1" | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.ipfsPort* | The ipfs port | 5001 | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-irc-kafka-connector/pom.xml b/connectors/camel-irc-kafka-connector/pom.xml
index 0fbce69..771577c 100644
--- a/connectors/camel-irc-kafka-connector/pom.xml
+++ b/connectors/camel-irc-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-irc-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: irc</name>
diff --git a/connectors/camel-irc-kafka-connector/src/main/assembly/package.xml b/connectors/camel-irc-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-irc-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-irc-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-irc-kafka-connector/src/main/docs/camel-irc-kafka-sink-connector.adoc b/connectors/camel-irc-kafka-connector/src/main/docs/camel-irc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..50d9cbf
--- /dev/null
+++ b/connectors/camel-irc-kafka-connector/src/main/docs/camel-irc-kafka-sink-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-irc-kafka-connector-sink]]
+= camel-irc-kafka-connector sink configuration
+
+When using camel-irc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-irc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-irc sink connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostname* | Hostname for the IRC chat server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the IRC chat server. If no port is configured then a default port of either 6667, 6668 or 6669 is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoRejoin* | Whether to auto re-join when being kicked | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channels* | Comma separated list of IRC channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commandTimeout* | Delay in milliseconds before sending commands after the connection is established. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keys* | Comma separated list of keys for channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namesOnJoin* | Sends NAMES command to channel after joining it. onReply has to be true in order to process the result which will have the header value irc.num = '353'. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nickname* | The nickname used in chat. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistent* | Use persistent messages. | true | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.realname* | The IRC user's actual name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.colors* | Whether or not the server supports color codes. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onJoin* | Handle user join events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onKick* | Handle kick events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onMode* | Handle mode change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onNick* | Handle nickname change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onPart* | Handle user part events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onPrivmsg* | Handle private message events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onQuit* | Handle user quit events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onReply* | Whether or not to handle general responses to commands or informational messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onTopic* | Handle topic change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nickPassword* | Your IRC server nickname password. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The IRC server password. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Used for configuring security using SSL. Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. Note that this setting overrides the trustManager option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustManager* | The trust manager used to verify the SSL server's certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The IRC server user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-irc-kafka-connector/src/main/docs/camel-irc-kafka-source-connector.adoc b/connectors/camel-irc-kafka-connector/src/main/docs/camel-irc-kafka-source-connector.adoc
new file mode 100644
index 0000000..9b49792
--- /dev/null
+++ b/connectors/camel-irc-kafka-connector/src/main/docs/camel-irc-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-irc-kafka-connector-source]]
+= camel-irc-kafka-connector source configuration
+
+When using camel-irc-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-irc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-irc source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.hostname* | Hostname for the IRC chat server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the IRC chat server. If no port is configured then a default port of either 6667, 6668 or 6669 is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoRejoin* | Whether to auto re-join when being kicked | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channels* | Comma separated list of IRC channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.commandTimeout* | Delay in milliseconds before sending commands after the connection is established. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keys* | Comma separated list of keys for channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namesOnJoin* | Sends NAMES command to channel after joining it. onReply has to be true in order to process the result which will have the header value irc.num = '353'. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nickname* | The nickname used in chat. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistent* | Use persistent messages. | true | ConfigDef.Importance.LOW
+| *camel.source.endpoint.realname* | The IRC user's actual name. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.colors* | Whether or not the server supports color codes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onJoin* | Handle user join events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onKick* | Handle kick events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onMode* | Handle mode change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onNick* | Handle nickname change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onPart* | Handle user part events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onPrivmsg* | Handle private message events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onQuit* | Handle user quit events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onReply* | Whether or not to handle general responses to commands or informational messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onTopic* | Handle topic change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nickPassword* | Your IRC server nickname password. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The IRC server password. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Used for configuring security using SSL. Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. Note that this setting overrides the trustManager option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustManager* | The trust manager used to verify the SSL server's certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The IRC server user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ironmq-kafka-connector/pom.xml b/connectors/camel-ironmq-kafka-connector/pom.xml
index 05199af..9dffa18 100644
--- a/connectors/camel-ironmq-kafka-connector/pom.xml
+++ b/connectors/camel-ironmq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ironmq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ironmq</name>
diff --git a/connectors/camel-ironmq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ironmq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ironmq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ironmq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ironmq-kafka-connector/src/main/docs/camel-ironmq-kafka-sink-connector.adoc b/connectors/camel-ironmq-kafka-connector/src/main/docs/camel-ironmq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..242bc2e
--- /dev/null
+++ b/connectors/camel-ironmq-kafka-connector/src/main/docs/camel-ironmq-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-ironmq-kafka-connector-sink]]
+= camel-ironmq-kafka-connector sink configuration
+
+When using camel-ironmq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ironmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ironmq sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.queueName* | The name of the IronMQ queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.client* | Reference to a io.iron.ironmq.Client in the Registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ironMQCloud* | IronMq Cloud url. Urls for public clusters: \https://mq-aws-us-east-1-1.iron.io (US) and \https://mq-aws-eu-west-1-1.iron.io (EU) | "https://mq-aws-us-east-1-1.iron.io" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHeaders* | Should message headers be preserved when publishing messages. This will add the Camel headers to the Iron MQ message as a json payload with a header list, and a message body. Useful when Camel is both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.projectId* | IronMQ projectId | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.token* | IronMQ token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.visibilityDelay* | The item will not be available on the queue until this many seconds have passed. Default is 0 seconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ironmq-kafka-connector/src/main/docs/camel-ironmq-kafka-source-connector.adoc b/connectors/camel-ironmq-kafka-connector/src/main/docs/camel-ironmq-kafka-source-connector.adoc
new file mode 100644
index 0000000..4c129e6
--- /dev/null
+++ b/connectors/camel-ironmq-kafka-connector/src/main/docs/camel-ironmq-kafka-source-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-ironmq-kafka-connector-source]]
+= camel-ironmq-kafka-connector source configuration
+
+When using camel-ironmq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ironmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ironmq source connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.queueName* | The name of the IronMQ queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.client* | Reference to a io.iron.ironmq.Client in the Registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ironMQCloud* | IronMq Cloud url. Urls for public clusters: \https://mq-aws-us-east-1-1.iron.io (US) and \https://mq-aws-eu-west-1-1.iron.io (EU) | "https://mq-aws-us-east-1-1.iron.io" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preserveHeaders* | Should message headers be preserved when publishing messages. This will add the Camel headers to the Iron MQ message as a json payload with a header list, and a message body. Useful when Camel is both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.projectId* | IronMQ projectId | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.token* | IronMQ token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.batchDelete* | Should messages be deleted in one batch. This will limit the number of api requests since messages are deleted in one request, instead of one pr. exchange. If enabled care should be taken that the consumer is idempotent when processing exchanges. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | The number of concurrent consumers. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Number of messages to poll pr. call. Maximum is 100. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | After timeout (in seconds), item will be placed back onto the queue. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.wait* | Time in seconds to wait for a message to become available. This enables long polling. Default is 0 (does not wait), maximum is 30. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jbpm-kafka-connector/pom.xml b/connectors/camel-jbpm-kafka-connector/pom.xml
index 388dbe7..dfc83bc 100644
--- a/connectors/camel-jbpm-kafka-connector/pom.xml
+++ b/connectors/camel-jbpm-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jbpm-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jbpm</name>
diff --git a/connectors/camel-jbpm-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jbpm-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jbpm-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jbpm-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jbpm-kafka-connector/src/main/docs/camel-jbpm-kafka-sink-connector.adoc b/connectors/camel-jbpm-kafka-connector/src/main/docs/camel-jbpm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7133e65
--- /dev/null
+++ b/connectors/camel-jbpm-kafka-connector/src/main/docs/camel-jbpm-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-jbpm-kafka-connector-sink]]
+= camel-jbpm-kafka-connector sink configuration
+
+When using camel-jbpm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jbpm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jbpm sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionURL* | The URL to the jBPM server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.eventListenerType* | Sets the event listener type to attach to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentId* | attachId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentId* | contentId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deploymentId* | The id of the deployment | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.emitterSendItems* | Sets if event produced by emitter should be sent as single items or complete collection | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.event* | the data associated with this event when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventType* | the type of event to use when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.identifier* | identifier the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxNumber* | the maximum number of rules that should be fired | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.page* | The page to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageSize* | The page size to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.processId* | the id of the process that should be acted upon | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.processInstanceId* | the id of the process instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetUserId* | The targetUserId used when delegating a task | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.task* | The task instance to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.taskId* | the id of the task | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | A timeout value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId* | userId to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | the value to assign to the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workItemId* | the id of the work item | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform | "startProcess" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entities* | The potentialOwners when nominateTask operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extraJaxbClasses* | To load additional classes when working with XML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | the variables that should be set for various operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statuses* | The list of status to use when filtering tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Username for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jbpm-kafka-connector/src/main/docs/camel-jbpm-kafka-source-connector.adoc b/connectors/camel-jbpm-kafka-connector/src/main/docs/camel-jbpm-kafka-source-connector.adoc
new file mode 100644
index 0000000..90a7bd9
--- /dev/null
+++ b/connectors/camel-jbpm-kafka-connector/src/main/docs/camel-jbpm-kafka-source-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-jbpm-kafka-connector-source]]
+= camel-jbpm-kafka-connector source configuration
+
+When using camel-jbpm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jbpm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jbpm source connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionURL* | The URL to the jBPM server. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.eventListenerType* | Sets the event listener type to attach to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentId* | attachId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentId* | contentId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deploymentId* | The id of the deployment | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.emitterSendItems* | Sets if event produced by emitter should be sent as single items or complete collection | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.event* | the data associated with this event when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventType* | the type of event to use when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.identifier* | identifier the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxNumber* | the maximum number of rules that should be fired | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.page* | The page to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageSize* | The page size to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processId* | the id of the process that should be acted upon | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processInstanceId* | the id of the process instance | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.targetUserId* | The targetUserId used when delegating a task | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.task* | The task instance to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskId* | the id of the task | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | A timeout value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | userId to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.value* | the value to assign to the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workItemId* | the id of the work item | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.entities* | The potentialOwners when nominateTask operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extraJaxbClasses* | To load additional classes when working with XML | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | the variables that should be set for various operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statuses* | The list of status to use when filtering tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Username for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jcache-kafka-connector/pom.xml b/connectors/camel-jcache-kafka-connector/pom.xml
index dd539a6..1c45ce5 100644
--- a/connectors/camel-jcache-kafka-connector/pom.xml
+++ b/connectors/camel-jcache-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jcache-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jcache</name>
diff --git a/connectors/camel-jcache-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jcache-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jcache-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jcache-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jcache-kafka-connector/src/main/docs/camel-jcache-kafka-sink-connector.adoc b/connectors/camel-jcache-kafka-connector/src/main/docs/camel-jcache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6eb65be
--- /dev/null
+++ b/connectors/camel-jcache-kafka-connector/src/main/docs/camel-jcache-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-jcache-kafka-connector-sink]]
+= camel-jcache-kafka-connector sink configuration
+
+When using camel-jcache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcache sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheConfigurationProperties* | The Properties for the javax.cache.spi.CachingProvider to create the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.managementEnabled* | Whether management gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readThrough* | If read-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statisticsEnabled* | Whether statistics gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.storeByValue* | If cache should use store-by-value or store-by-reference semantics | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeThrough* | If write-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | To configure using a cache operation by default. If an operation in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheLoaderFactory* | The CacheLoader factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheWriterFactory* | The CacheWriter factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExists* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expiryPolicyFactory* | The ExpiryPolicy factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lookupProviders* | Configure if a camel-cache should try to find implementations of jcache api in runtimes like OSGi. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration Properties* | Properties to configure jcache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration PropertiesRef* | References to an existing Properties or Map to lookup in the registry to use for configuring jcache. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jcache-kafka-connector/src/main/docs/camel-jcache-kafka-source-connector.adoc b/connectors/camel-jcache-kafka-connector/src/main/docs/camel-jcache-kafka-source-connector.adoc
new file mode 100644
index 0000000..24b04e2
--- /dev/null
+++ b/connectors/camel-jcache-kafka-connector/src/main/docs/camel-jcache-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-jcache-kafka-connector-source]]
+= camel-jcache-kafka-connector source configuration
+
+When using camel-jcache-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcache source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheConfigurationProperties* | The Properties for the javax.cache.spi.CachingProvider to create the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.managementEnabled* | Whether management gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readThrough* | If read-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statisticsEnabled* | Whether statistics gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.storeByValue* | If cache should use store-by-value or store-by-reference semantics | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeThrough* | If write-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filteredEvents* | Events a consumer should filter (multiple events can be separated by comma). If using filteredEvents option, then eventFilters one will be ignored One of: [CREATED] [UPDATED] [REMOVED] [EXPIRED] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oldValueRequired* | if the old value is required for events | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | if the event listener should block the thread causing the event | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventFilters* | The CacheEntryEventFilter. If using eventFilters option, then filteredEvents one will be ignored | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLoaderFactory* | The CacheLoader factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheWriterFactory* | The CacheWriter factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createCacheIfNotExists* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expiryPolicyFactory* | The ExpiryPolicy factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lookupProviders* | Configure if a camel-cache should try to find implementations of jcache api in runtimes like OSGi. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration Properties* | Properties to configure jcache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration PropertiesRef* | References to an existing Properties or Map to lookup in the registry to use for configuring jcache. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jclouds-kafka-connector/pom.xml b/connectors/camel-jclouds-kafka-connector/pom.xml
index 0ff32b6..71ac256 100644
--- a/connectors/camel-jclouds-kafka-connector/pom.xml
+++ b/connectors/camel-jclouds-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jclouds-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jclouds</name>
diff --git a/connectors/camel-jclouds-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jclouds-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jclouds-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jclouds-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jclouds-kafka-connector/src/main/docs/camel-jclouds-kafka-sink-connector.adoc b/connectors/camel-jclouds-kafka-connector/src/main/docs/camel-jclouds-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5d387ba
--- /dev/null
+++ b/connectors/camel-jclouds-kafka-connector/src/main/docs/camel-jclouds-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jclouds-kafka-connector-sink]]
+= camel-jclouds-kafka-connector sink configuration
+
+When using camel-jclouds-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jclouds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jclouds sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.command* | What command to execute such as blobstore or compute. One of: [blobstore] [compute] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.providerId* | The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2). | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobName* | The name of the blob. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.container* | The name of the blob container. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.group* | The group that will be assigned to the newly created node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hardwareId* | The hardware that will be used for creating a node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.imageId* | The imageId that will be used for creating a node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.locationId* | The location that will be used for creating a node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeId* | The id of the node that will run the script or destroyed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeState* | To filter by node status to only select running nodes etc. One of: [PENDING] [TERMINATED] [SUSPENDED] [RUNNING] [ERROR] [UNRECOGNIZED] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Specifies the type of operation that will be performed to the blobstore. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | The user on the target node that will run the script. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.blobStores* | To use the given BlobStore which must be configured when using blobstore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.computeServices* | To use the given ComputeService which must be configured when use compute. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jclouds-kafka-connector/src/main/docs/camel-jclouds-kafka-source-connector.adoc b/connectors/camel-jclouds-kafka-connector/src/main/docs/camel-jclouds-kafka-source-connector.adoc
new file mode 100644
index 0000000..ce8a7c0
--- /dev/null
+++ b/connectors/camel-jclouds-kafka-connector/src/main/docs/camel-jclouds-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-jclouds-kafka-connector-source]]
+= camel-jclouds-kafka-connector source configuration
+
+When using camel-jclouds-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jclouds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jclouds source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.command* | What command to execute such as blobstore or compute. One of: [blobstore] [compute] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.providerId* | The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2). | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.container* | The name of the blob container. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.directory* | An optional directory name to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.blobStores* | To use the given BlobStore which must be configured when using blobstore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.computeServices* | To use the given ComputeService which must be configured when use compute. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jcr-kafka-connector/pom.xml b/connectors/camel-jcr-kafka-connector/pom.xml
index 6e82b0c..70ff301 100644
--- a/connectors/camel-jcr-kafka-connector/pom.xml
+++ b/connectors/camel-jcr-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jcr-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jcr</name>
diff --git a/connectors/camel-jcr-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jcr-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jcr-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jcr-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jcr-kafka-connector/src/main/docs/camel-jcr-kafka-sink-connector.adoc b/connectors/camel-jcr-kafka-connector/src/main/docs/camel-jcr-kafka-sink-connector.adoc
new file mode 100644
index 0000000..15988c9
--- /dev/null
+++ b/connectors/camel-jcr-kafka-connector/src/main/docs/camel-jcr-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-jcr-kafka-connector-sink]]
+= camel-jcr-kafka-connector sink configuration
+
+When using camel-jcr-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcr sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Name of the javax.jcr.Repository to lookup from the Camel registry to be used. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.base* | Get the base node when accessing the repository | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deep* | When isDeep is true, events whose associated parent node is at absPath or within its subgraph are received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventTypes* | eventTypes (a combination of one or more event types encoded as a bit mask value such as javax.jcr.observation.Event.NODE_ADDED, javax.jcr.observation.Event.NODE_REMOVED, etc.). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeTypeNames* | When a comma separated nodeTypeName list string is set, only events whose associated parent node has one of the node types (or a subtype of one of the node types) in this list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noLocal* | If noLocal is true, then events generated by the session through which the listener was registered are ignored. Otherwise, they are not ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionLiveCheckInterval* | Interval in milliseconds to wait before each session live checking The default value is 60000 ms. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionLiveCheckIntervalOn Start* | Interval in milliseconds to wait before the first session live checking. The default value is 3000 ms. | 3000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uuids* | When a comma separated uuid list string is set, only events whose associated parent node has one of the identifiers in the comma separated uuid list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workspaceName* | The workspace to access. If it's not specified then the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jcr-kafka-connector/src/main/docs/camel-jcr-kafka-source-connector.adoc b/connectors/camel-jcr-kafka-connector/src/main/docs/camel-jcr-kafka-source-connector.adoc
new file mode 100644
index 0000000..0498489
--- /dev/null
+++ b/connectors/camel-jcr-kafka-connector/src/main/docs/camel-jcr-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jcr-kafka-connector-source]]
+= camel-jcr-kafka-connector source configuration
+
+When using camel-jcr-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcr source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Name of the javax.jcr.Repository to lookup from the Camel registry to be used. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.base* | Get the base node when accessing the repository | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deep* | When isDeep is true, events whose associated parent node is at absPath or within its subgraph are received. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventTypes* | eventTypes (a combination of one or more event types encoded as a bit mask value such as javax.jcr.observation.Event.NODE_ADDED, javax.jcr.observation.Event.NODE_REMOVED, etc.). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodeTypeNames* | When a comma separated nodeTypeName list string is set, only events whose associated parent node has one of the node types (or a subtype of one of the node types) in this list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noLocal* | If noLocal is true, then events generated by the session through which the listener was registered are ignored. Otherwise, they are not ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionLiveCheckInterval* | Interval in milliseconds to wait before each session live checking The default value is 60000 ms. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionLiveCheckIntervalOn Start* | Interval in milliseconds to wait before the first session live checking. The default value is 3000 ms. | 3000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uuids* | When a comma separated uuid list string is set, only events whose associated parent node has one of the identifiers in the comma separated uuid list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workspaceName* | The workspace to access. If it's not specified then the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jdbc-kafka-connector/pom.xml b/connectors/camel-jdbc-kafka-connector/pom.xml
index 18ee87c..bbc2f57 100644
--- a/connectors/camel-jdbc-kafka-connector/pom.xml
+++ b/connectors/camel-jdbc-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jdbc-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jdbc</name>
diff --git a/connectors/camel-jdbc-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jdbc-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jdbc-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jdbc-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jdbc-kafka-connector/src/main/docs/camel-jdbc-kafka-sink-connector.adoc b/connectors/camel-jdbc-kafka-connector/src/main/docs/camel-jdbc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8aa00b7
--- /dev/null
+++ b/connectors/camel-jdbc-kafka-connector/src/main/docs/camel-jdbc-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jdbc-kafka-connector-sink]]
+= camel-jdbc-kafka-connector sink configuration
+
+When using camel-jdbc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jdbc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jdbc sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.dataSourceName* | Name of DataSource to lookup in the Registry. If the name is dataSource or default, then Camel will attempt to lookup a default DataSource from the registry, meaning if there is a only one instance of DataSource found, then this DataSource will be used. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne or SelectList. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Determines the output the producer should use. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Optional parameters to the java.sql.Statement. For example to set maxRows, fetchSize etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readSize* | The default maximum number of rows that can be read by a polling query. The default value is 0. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resetAutoCommit* | Camel will set the autoCommit on the JDBC connection to be false, commit the change after executed the statement and reset the autoCommit flag of the connection at the end, if the resetAutoCommit is true. If the JDBC connection doesn't support to reset the autoCommit flag, you can set the resetAutoCommit flag to be false, and Camel will not try to reset the autoCommit flag. When used with XA transactions you most likely need to set it to false so that the transaction manager is in charge of committing this tx. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Whether transactions are in use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useGetBytesForBlob* | To read BLOB columns as bytes instead of string data. This may be needed for certain databases such as Oracle where you must read BLOB columns as bytes. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useHeadersAsParameters* | Set this option to true to use the prepareStatementStrategy with named parameters. This allows to define queries with named placeholders, and use headers with the dynamic values for the query placeholders. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useJDBC4ColumnNameAndLabel Semantics* | Sets whether to use JDBC 4 or JDBC 3.0 or older semantic when retrieving column name. JDBC 4.0 uses columnLabel to get the column name where as JDBC 3.0 uses both columnName or columnLabel. Unfortunately JDBC drivers behave differently so you can use this option to work out issues around your JDBC driver if you get problem using this component This option is default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.beanRowMapper* | To use a custom org.apache.camel.component.jdbc.BeanRowMapper when using outputClass. The default implementation will lower case the row names and skip underscores, and dashes. For example CUST_ID is mapped as custId. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatementStrategy* | Allows the plugin to use a custom org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jdbc.dataSource* | To use the DataSource instance instead of looking up the data source by name from the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jdbc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jdbc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jetty-kafka-connector/pom.xml b/connectors/camel-jetty-kafka-connector/pom.xml
index d27f1c2..6832f2c 100644
--- a/connectors/camel-jetty-kafka-connector/pom.xml
+++ b/connectors/camel-jetty-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jetty-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jetty</name>
diff --git a/connectors/camel-jetty-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jetty-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jetty-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jetty-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jetty-kafka-connector/src/main/docs/camel-jetty-kafka-source-connector.adoc b/connectors/camel-jetty-kafka-connector/src/main/docs/camel-jetty-kafka-source-connector.adoc
new file mode 100644
index 0000000..8c2275f
--- /dev/null
+++ b/connectors/camel-jetty-kafka-connector/src/main/docs/camel-jetty-kafka-source-connector.adoc
@@ -0,0 +1,93 @@
+// kafka-connector options: START
+[[camel-jetty-kafka-connector-source]]
+= camel-jetty-kafka-connector source configuration
+
+When using camel-jetty-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jetty-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jetty source connector supports 67 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpUri* | The url of the HTTP endpoint to call. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.async* | Configure the consumer to work in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.continuationTimeout* | Allows to set a timeout in millis when using Jetty as consumer (server). By default Jetty uses 30000. You can use a value of = 0 to never expire. If a timeout occurs then the request will be expired and Jetty will return back a http error 503 to the client. This option is only in use when using Jetty with the Asynchronous Routing Engine. | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableCORS* | If the option is true, Jetty server will setup the CrossOriginFilter which supports the CORS out of box. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableMultipartFilter* | Whether org.apache.camel.component.jetty.MultiPartFilter is enabled or not. You should set this value to false when bridging endpoints, to ensure multipart requests is proxied/bridged as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.responseBufferSize* | To use a custom buffer size on the javax.servlet.ServletResponse. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendDateHeader* | If the option is true, jetty server will send the date header to the client which sends the request. NOTE please make sure there is no any other camel-jetty endpoint is share the same port, otherwise this option may not work as expected. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendServerVersion* | If the option is true, jetty will send the server header with the jetty version information to the client which sends the request. NOTE please make sure there is no any other camel-jetty endpoint is share the same port, otherwise this option may not work as expected. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionSupport* | Specifies whether to enable the session manager on the server side of Jetty. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useContinuation* | Whether or not to use Jetty continuations for the Jetty Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckContentAvailable* | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterInitParameters* | Configuration of the filter init parameters. These parameters will be applied to the filter list before starting the jetty server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filters* | Allows using a custom filters which is putted into a list and can be find in the Registry. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handlers* | Specifies a comma-delimited set of Handler instances to lookup in your Registry. These handlers are added to the Jetty servlet context (for example, to add security). Important: You can not use different handlers with different Jetty endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipartFilter* | Allows using a custom multipart filter. Note: setting multipartFilterRef forces the value of enableMultipartFilter to true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.continuationTimeout* | Allows to set a timeout in millis when using Jetty as consumer (server). By default Jetty uses 30000. You can use a value of = 0 to never expire. If a timeout occurs then the request will be expired and Jetty will return back a http error 503 to the client. This option is only in use when using Jetty with the Asynchronous Routing Engine. | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.maxThreads* | To set a value for maximum number of threads in server thread pool. Notice that both a min and max size must be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.minThreads* | To set a value for minimum number of threads in server thread pool. Notice that both a min and max size must be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.requestBufferSize* | Allows to configure a custom value of the request buffer size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.requestHeaderSize* | Allows to configure a custom value of the request header size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.responseBufferSize* | Allows to configure a custom value of the response buffer size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.responseHeaderSize* | Allows to configure a custom value of the response header size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sendServerVersion* | If the option is true, jetty will send the server header with the jetty version information to the client which sends the request. NOTE please make sure there is no any other camel-jetty endpoint is share the same port, otherwise this option may not work as expected. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.useContinuation* | Whether or not to use Jetty continuations for the Jetty Server. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.useXForwardedForHeader* | To use the X-Forwarded-For header in HttpServletRequest.getRemoteAddr. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.threadPool* | To use a custom thread pool for the server. This option should only be used in special circumstances. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.errorHandler* | This option is used to set the ErrorHandler that Jetty server uses. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.httpBinding* | Not to be used - use JettyHttpBinding instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.httpConfiguration* | Jetty component does not use HttpConfiguration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.jettyHttpBinding* | To use a custom org.apache.camel.component.jetty.JettyHttpBinding, which are used to customize how a response should be written for the producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.mbContainer* | To use a existing configured org.eclipse.jetty.jmx.MBeanContainer if JMX is enabled that Jetty uses for registering mbeans. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.proxyHost* | To use a http proxy to configure the hostname. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.proxyPort* | To use a http proxy to configure the port number. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.keystore* | Specifies the location of the Java keystore file, which contains the Jetty server's own X.509 certificate in a key entry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.socketConnectorProperties* | A map which contains general HTTP connector properties. Uses the same principle as sslSocketConnectorProperties. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.socketConnectors* | A map which contains per port number specific HTTP connectors. Uses the same principle as sslSocketConnectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslKeyPassword* | The key password, which is used to access the certificate's key entry in the keystore (this is the same password that is supplied to the keystore command's -keypass option). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslPassword* | The ssl password, which is required to access the keystore file (this is the same password that is supplied to the keystore command's -storepass option). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslSocketConnectorProperties* | A map which contains general SSL connector properties. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslSocketConnectors* | A map which contains per port number specific SSL connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jgroups-kafka-connector/pom.xml b/connectors/camel-jgroups-kafka-connector/pom.xml
index e7ab35f..ebc4059 100644
--- a/connectors/camel-jgroups-kafka-connector/pom.xml
+++ b/connectors/camel-jgroups-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jgroups-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jgroups</name>
diff --git a/connectors/camel-jgroups-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jgroups-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jgroups-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jgroups-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jgroups-kafka-connector/src/main/docs/camel-jgroups-kafka-sink-connector.adoc b/connectors/camel-jgroups-kafka-connector/src/main/docs/camel-jgroups-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3fb0de1
--- /dev/null
+++ b/connectors/camel-jgroups-kafka-connector/src/main/docs/camel-jgroups-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-jgroups-kafka-connector-sink]]
+= camel-jgroups-kafka-connector sink configuration
+
+When using camel-jgroups-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.clusterName* | The name of the JGroups cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channel* | Channel to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jgroups-kafka-connector/src/main/docs/camel-jgroups-kafka-source-connector.adoc b/connectors/camel-jgroups-kafka-connector/src/main/docs/camel-jgroups-kafka-source-connector.adoc
new file mode 100644
index 0000000..80e0df4
--- /dev/null
+++ b/connectors/camel-jgroups-kafka-connector/src/main/docs/camel-jgroups-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-jgroups-kafka-connector-source]]
+= camel-jgroups-kafka-connector source configuration
+
+When using camel-jgroups-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.clusterName* | The name of the JGroups cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableViewMessages* | If set to true, the consumer endpoint will receive org.jgroups.View messages as well (not only org.jgroups.Message instances). By default only regular messages are consumed by the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channel* | Channel to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.enableViewMessages* | If set to true, the consumer endpoint will receive org.jgroups.View messages as well (not only org.jgroups.Message instances). By default only regular messages are consumed by the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jgroups-raft-kafka-connector/pom.xml b/connectors/camel-jgroups-raft-kafka-connector/pom.xml
index b9c5aac..b1f1086 100644
--- a/connectors/camel-jgroups-raft-kafka-connector/pom.xml
+++ b/connectors/camel-jgroups-raft-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jgroups-raft-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jgroups-raft</name>
diff --git a/connectors/camel-jgroups-raft-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jgroups-raft-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jgroups-raft-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jgroups-raft-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jgroups-raft-kafka-connector/src/main/docs/camel-jgroups-raft-kafka-sink-connector.adoc b/connectors/camel-jgroups-raft-kafka-connector/src/main/docs/camel-jgroups-raft-kafka-sink-connector.adoc
new file mode 100644
index 0000000..403c63a
--- /dev/null
+++ b/connectors/camel-jgroups-raft-kafka-connector/src/main/docs/camel-jgroups-raft-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-jgroups-raft-kafka-connector-sink]]
+= camel-jgroups-raft-kafka-connector sink configuration
+
+When using camel-jgroups-raft-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-raft-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups-raft sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.clusterName* | The name of the JGroupsraft cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.channelProperties* | Specifies configuration properties of the RaftHandle JChannel used by the endpoint (ignored if raftHandle ref is provided). | "raft.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftHandle* | RaftHandle to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftId* | Unique raftId to use. | null | ConfigDef.Importance.HIGH
+| *camel.component.jgroups-raft.stateMachine* | StateMachine to use. | "NopStateMachine" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jgroups-raft-kafka-connector/src/main/docs/camel-jgroups-raft-kafka-source-connector.adoc b/connectors/camel-jgroups-raft-kafka-connector/src/main/docs/camel-jgroups-raft-kafka-source-connector.adoc
new file mode 100644
index 0000000..11f271b
--- /dev/null
+++ b/connectors/camel-jgroups-raft-kafka-connector/src/main/docs/camel-jgroups-raft-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-jgroups-raft-kafka-connector-source]]
+= camel-jgroups-raft-kafka-connector source configuration
+
+When using camel-jgroups-raft-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-raft-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups-raft source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.clusterName* | The name of the JGroupsraft cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableRoleChangeEvents* | If set to true, the consumer endpoint will receive roleChange event as well (not just connecting and/or using the state machine). By default it is set to false. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.channelProperties* | Specifies configuration properties of the RaftHandle JChannel used by the endpoint (ignored if raftHandle ref is provided). | "raft.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftHandle* | RaftHandle to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftId* | Unique raftId to use. | null | ConfigDef.Importance.HIGH
+| *camel.component.jgroups-raft.stateMachine* | StateMachine to use. | "NopStateMachine" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jing-kafka-connector/pom.xml b/connectors/camel-jing-kafka-connector/pom.xml
index 33b919c..4df005e 100644
--- a/connectors/camel-jing-kafka-connector/pom.xml
+++ b/connectors/camel-jing-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jing-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jing</name>
diff --git a/connectors/camel-jing-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jing-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jing-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jing-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jing-kafka-connector/src/main/docs/camel-jing-kafka-sink-connector.adoc b/connectors/camel-jing-kafka-connector/src/main/docs/camel-jing-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bf7f8c9
--- /dev/null
+++ b/connectors/camel-jing-kafka-connector/src/main/docs/camel-jing-kafka-sink-connector.adoc
@@ -0,0 +1,33 @@
+// kafka-connector options: START
+[[camel-jing-kafka-connector-sink]]
+= camel-jing-kafka-connector sink configuration
+
+When using camel-jing-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jing-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jing sink connector supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | URL to a local resource on the classpath or a full URL to a remote resource or resource on the file system which contains the schema to validate against. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.compactSyntax* | Whether to validate using RelaxNG compact syntax or not. By default this is false for using RelaxNG XML Syntax (rng) And true is for using RelaxNG Compact Syntax (rnc) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jing.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jing.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jira-kafka-connector/pom.xml b/connectors/camel-jira-kafka-connector/pom.xml
index c457f81..d890f8b 100644
--- a/connectors/camel-jira-kafka-connector/pom.xml
+++ b/connectors/camel-jira-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jira-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jira</name>
diff --git a/connectors/camel-jira-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jira-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jira-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jira-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jira-kafka-connector/src/main/docs/camel-jira-kafka-sink-connector.adoc b/connectors/camel-jira-kafka-connector/src/main/docs/camel-jira-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7992b7e
--- /dev/null
+++ b/connectors/camel-jira-kafka-connector/src/main/docs/camel-jira-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-jira-kafka-connector-sink]]
+= camel-jira-kafka-connector sink configuration
+
+When using camel-jira-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jira-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jira sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | Operation to perform. Consumers: NewIssues, NewComments. Producers: AddIssue, AttachFile, DeleteIssue, TransitionIssue, UpdateIssue, Watchers. See this class javadoc description for more information. One of: [ADDCOMMENT] [ADDISSUE] [ATTACH] [DELETEISSUE] [NEWISSUES] [NEWCOMMENTS] [UPDATEISSUE] [TRANSITIONISSUE] [WATCHERS] [ADDISSUELINK] [ADDWORKLOG] [FETCHISSUE] [FETCHCOMMENTS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.delay* | Time in milliseconds to elapse for the next poll. | "6000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jiraUrl* | The Jira server url, example: \http://my_jira.com:8081 | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | (OAuth only) The access token generated by the Jira server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | (OAuth only) The consumer key from Jira settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | (Basic authentication only) The password to authenticate to the Jira server. Use only if username basic authentication is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | (OAuth only) The private key generated by the client to encrypt the conversation to the server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | (Basic authentication only) The username to authenticate to the Jira server. Use only if OAuth is not enabled on the Jira server. Do not set the username and OAuth token parameter, if they are both set, the username basic authentication takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.verificationCode* | (OAuth only) The verification code from Jira generated in the first step of the authorization proccess. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.configuration* | To use a shared base jira configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jira-kafka-connector/src/main/docs/camel-jira-kafka-source-connector.adoc b/connectors/camel-jira-kafka-connector/src/main/docs/camel-jira-kafka-source-connector.adoc
new file mode 100644
index 0000000..040bd57
--- /dev/null
+++ b/connectors/camel-jira-kafka-connector/src/main/docs/camel-jira-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jira-kafka-connector-source]]
+= camel-jira-kafka-connector source configuration
+
+When using camel-jira-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jira-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jira source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Operation to perform. Consumers: NewIssues, NewComments. Producers: AddIssue, AttachFile, DeleteIssue, TransitionIssue, UpdateIssue, Watchers. See this class javadoc description for more information. One of: [ADDCOMMENT] [ADDISSUE] [ATTACH] [DELETEISSUE] [NEWISSUES] [NEWCOMMENTS] [UPDATEISSUE] [TRANSITIONISSUE] [WATCHERS] [ADDISSUELINK] [ADDWORKLOG] [FETCHISSUE] [FETCHCOMMENTS] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.delay* | Time in milliseconds to elapse for the next poll. | "6000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jiraUrl* | The Jira server url, example: \http://my_jira.com:8081 | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jql* | JQL is the query language from JIRA which allows you to retrieve the data you want. For example jql=project=MyProject Where MyProject is the product key in Jira. It is important to use the RAW() and set the JQL inside it to prevent camel parsing it, example: RAW(project in (MYP, COM) AND resolution = Unresolved) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Max number of issues to search for | "50" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | (OAuth only) The access token generated by the Jira server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | (OAuth only) The consumer key from Jira settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | (Basic authentication only) The password to authenticate to the Jira server. Use only if username basic authentication is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | (OAuth only) The private key generated by the client to encrypt the conversation to the server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | (Basic authentication only) The username to authenticate to the Jira server. Use only if OAuth is not enabled on the Jira server. Do not set the username and OAuth token parameter, if they are both set, the username basic authentication takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.verificationCode* | (OAuth only) The verification code from Jira generated in the first step of the authorization proccess. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.configuration* | To use a shared base jira configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jms-kafka-connector/pom.xml b/connectors/camel-jms-kafka-connector/pom.xml
index 3352e28..6cbf047 100644
--- a/connectors/camel-jms-kafka-connector/pom.xml
+++ b/connectors/camel-jms-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jms-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jms</name>
diff --git a/connectors/camel-jms-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jms-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jms-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jms-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jms-kafka-connector/src/main/docs/camel-jms-kafka-sink-connector.adoc b/connectors/camel-jms-kafka-connector/src/main/docs/camel-jms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5d19230
--- /dev/null
+++ b/connectors/camel-jms-kafka-connector/src/main/docs/camel-jms-kafka-sink-connector.adoc
@@ -0,0 +1,158 @@
+// kafka-connector options: START
+[[camel-jms-kafka-connector-sink]]
+= camel-jms-kafka-connector sink configuration
+
+When using camel-jms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jms sink connector supports 132 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryDelay* | Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.formatDateHeadersToIso8601* | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOnTimeoutMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOverride* | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationProperty* | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableTimeToLive* | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message will not expire on the receiver system. See below in section About time to live for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToDestinationSelectorName* | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.formatDateHeadersToIso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyOnTimeoutToMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.correlationProperty* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jms-kafka-connector/src/main/docs/camel-jms-kafka-source-connector.adoc b/connectors/camel-jms-kafka-connector/src/main/docs/camel-jms-kafka-source-connector.adoc
new file mode 100644
index 0000000..5f9cc31
--- /dev/null
+++ b/connectors/camel-jms-kafka-connector/src/main/docs/camel-jms-kafka-source-connector.adoc
@@ -0,0 +1,159 @@
+// kafka-connector options: START
+[[camel-jms-kafka-connector-source]]
+= camel-jms-kafka-connector source configuration
+
+When using camel-jms-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jms source connector supports 133 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyTo* | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDeliveryPersistent* | Specifies whether to use persistent delivery by default for replies. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.selector* | Sets the JMS selector to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use. One of: [Simple] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerLoadingOfProperties* | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerPoisonBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToSameDestination Allowed* | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.acknowledgementMode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode. For the regular modes, it is preferable to use the acknowledgementModeName instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.eagerLoadingOfProperties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerLoadingOfBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jmx-kafka-connector/pom.xml b/connectors/camel-jmx-kafka-connector/pom.xml
index 6929c28..d9131b7 100644
--- a/connectors/camel-jmx-kafka-connector/pom.xml
+++ b/connectors/camel-jmx-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jmx-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jmx</name>
diff --git a/connectors/camel-jmx-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jmx-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jmx-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jmx-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jmx-kafka-connector/src/main/docs/camel-jmx-kafka-source-connector.adoc b/connectors/camel-jmx-kafka-connector/src/main/docs/camel-jmx-kafka-source-connector.adoc
new file mode 100644
index 0000000..06f005e
--- /dev/null
+++ b/connectors/camel-jmx-kafka-connector/src/main/docs/camel-jmx-kafka-source-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-jmx-kafka-connector-source]]
+= camel-jmx-kafka-connector source configuration
+
+When using camel-jmx-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jmx-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jmx source connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.serverURL* | Server url comes from the remaining endpoint. Use platform to connect to local JVM. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.format* | Format for the message body. Either xml or raw. If xml, the notification is serialized to xml. If raw, then the raw java object is set as the body. One of: [xml] [raw] | "xml" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.granularityPeriod* | The frequency to poll the bean to check the monitor (monitor types only). | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.monitorType* | The type of monitor to create. One of string, gauge, counter (monitor types only). One of: [counter] [gauge] [string] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectDomain* | The domain for the mbean you're connecting to | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.objectName* | The name key for the mbean you're connecting to. This value is mutually exclusive with the object properties that get passed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.observedAttribute* | The attribute to observe for the monitor bean or consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.executorService* | To use a custom shared thread pool for the consumers. By default each consume has their own thread-pool to process and route notifications. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handback* | Value to handback to the listener when a notification is received. This value will be put in the message header with the key jmx.handback | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notificationFilter* | Reference to a bean that implements the NotificationFilter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectProperties* | Properties for the object name. These values will be used if the objectName param is not set | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | The number of seconds to wait before attempting to retry establishment of the initial connection or attempt to reconnect a lost connection | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectOnConnectionFailure* | If true the consumer will attempt to reconnect to the JMX server when any connection failure occurs. The consumer will attempt to re-establish the JMX connection every 'x' seconds until the connection is made-- where 'x' is the configured reconnectionDelay | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | If true the consumer will throw an exception if unable to establish the JMX connection upon startup. If false, the consumer will attempt to establish the JMX connection every 'x' seconds until the connection is made -- where 'x' is the configured reconnectionDelay | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyDiffer* | If true, will fire a notification when the string attribute differs from the string to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyMatch* | If true, will fire a notification when the string attribute matches the string to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stringToCompare* | Value for attribute to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initThreshold* | Initial threshold for the monitor. The value must exceed this before notifications are fired (counter monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.modulus* | The value at which the counter is reset to zero (counter monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offset* | The amount to increment the threshold after it's been exceeded (counter monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.differenceMode* | If true, then the value reported in the notification is the difference from the threshold as opposed to the value itself (counter and gauge monitor only). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyHigh* | If true, the gauge will fire a notification when the high threshold is exceeded (gauge monitor only). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyLow* | If true, the gauge will fire a notification when the low threshold is exceeded (gauge monitor only). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.thresholdHigh* | Value for the gauge's high threshold (gauge monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.thresholdLow* | Value for the gauge's low threshold (gauge monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Credentials for making a remote connection | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | Credentials for making a remote connection | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jmx.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jmx.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jolt-kafka-connector/pom.xml b/connectors/camel-jolt-kafka-connector/pom.xml
index 791760e..0bd1dd0 100644
--- a/connectors/camel-jolt-kafka-connector/pom.xml
+++ b/connectors/camel-jolt-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jolt-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jolt</name>
diff --git a/connectors/camel-jolt-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jolt-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jolt-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jolt-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jolt-kafka-connector/src/main/docs/camel-jolt-kafka-sink-connector.adoc b/connectors/camel-jolt-kafka-connector/src/main/docs/camel-jolt-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1ab1f01
--- /dev/null
+++ b/connectors/camel-jolt-kafka-connector/src/main/docs/camel-jolt-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-jolt-kafka-connector-sink]]
+= camel-jolt-kafka-connector sink configuration
+
+When using camel-jolt-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jolt-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jolt sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputType* | Specifies if the input is hydrated JSON or a JSON String. One of: [Hydrated] [JsonString] | "Hydrated" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Specifies if the output should be hydrated JSON or a JSON String. One of: [Hydrated] [JsonString] | "Hydrated" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformDsl* | Specifies the Transform DSL of the endpoint resource. If none is specified Chainr will be used. One of: [Chainr] [Shiftr] [Defaultr] [Removr] [Sortr] | "Chainr" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jolt.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jolt.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jolt.transform* | Explicitly sets the Transform to use. If not set a Transform specified by the transformDsl will be created | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jooq-kafka-connector/pom.xml b/connectors/camel-jooq-kafka-connector/pom.xml
index c23c9b2..6c018c1 100644
--- a/connectors/camel-jooq-kafka-connector/pom.xml
+++ b/connectors/camel-jooq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jooq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jooq</name>
diff --git a/connectors/camel-jooq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jooq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jooq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jooq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jooq-kafka-connector/src/main/docs/camel-jooq-kafka-sink-connector.adoc b/connectors/camel-jooq-kafka-connector/src/main/docs/camel-jooq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..50a1439
--- /dev/null
+++ b/connectors/camel-jooq-kafka-connector/src/main/docs/camel-jooq-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-jooq-kafka-connector-sink]]
+= camel-jooq-kafka-connector sink configuration
+
+When using camel-jooq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jooq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jooq sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.entityType* | JOOQ entity class | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseConfiguration* | To use a specific database configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Type of operation to execute on query One of: [EXECUTE] [FETCH] [NONE] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | To execute plain SQL query | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.configuration* | Component configuration (database connection, database entity type, etc.) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jooq-kafka-connector/src/main/docs/camel-jooq-kafka-source-connector.adoc b/connectors/camel-jooq-kafka-connector/src/main/docs/camel-jooq-kafka-source-connector.adoc
new file mode 100644
index 0000000..23191ca
--- /dev/null
+++ b/connectors/camel-jooq-kafka-connector/src/main/docs/camel-jooq-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-jooq-kafka-connector-source]]
+= camel-jooq-kafka-connector source configuration
+
+When using camel-jooq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jooq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jooq source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.entityType* | JOOQ entity class | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseConfiguration* | To use a specific database configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeDelete* | Delete entity after it is consumed | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.configuration* | Component configuration (database connection, database entity type, etc.) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jpa-kafka-connector/pom.xml b/connectors/camel-jpa-kafka-connector/pom.xml
index 3c19fbc..43696bd 100644
--- a/connectors/camel-jpa-kafka-connector/pom.xml
+++ b/connectors/camel-jpa-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jpa-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jpa</name>
diff --git a/connectors/camel-jpa-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jpa-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jpa-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jpa-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jpa-kafka-connector/src/main/docs/camel-jpa-kafka-sink-connector.adoc b/connectors/camel-jpa-kafka-connector/src/main/docs/camel-jpa-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7171d95
--- /dev/null
+++ b/connectors/camel-jpa-kafka-connector/src/main/docs/camel-jpa-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-jpa-kafka-connector-sink]]
+= camel-jpa-kafka-connector sink configuration
+
+When using camel-jpa-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jpa sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.entityType* | Entity class name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumResults* | Set the maximum number of results to retrieve on the Query. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedQuery* | To use a named query. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nativeQuery* | To use a custom native query. You may want to use the option resultClass also when using native queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistenceUnit* | The JPA persistence unit used by default. | "camel" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.query* | To use a custom query. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultClass* | Defines the type of the returned payload (we will call entityManager.createNativeQuery(nativeQuery, resultClass) instead of entityManager.createNativeQuery(nativeQuery)). Without this option, we will return an object array. Only has an affect when using in conjunction with native query when consuming data. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.findEntity* | If enabled then the producer will find a single entity by using the message body as key and entityType as the class type. This can be used instead of a query to find a single entity. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushOnSend* | Flushes the EntityManager after the entity bean has been persisted. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remove* | Indicates to use entityManager.remove(entity). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useExecuteUpdate* | To configure whether to use executeUpdate() when producer executes a query. When you use INSERT, UPDATE or DELETE statement as a named query, you need to specify this option to 'true'. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePersist* | Indicates to use entityManager.persist(entity) instead of entityManager.merge(entity). Note: entityManager.persist(entity) doesn't work for detached entities (where the EntityManager has to execute an UPDATE instead of an INSERT query)! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePassedInEntityManager* | If set to true, then Camel will use the EntityManager from the header JpaConstants.ENTITY_MANAGER instead of the configured entity manager on the component/endpoint. This allows end users to control which entity manager will be in use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityManagerProperties* | Additional properties for the entity manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.entityManagerFactory* | To use the EntityManagerFactory. This is strongly recommended to configure. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.transactionManager* | To use the PlatformTransactionManager for managing transactions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jpa-kafka-connector/src/main/docs/camel-jpa-kafka-source-connector.adoc b/connectors/camel-jpa-kafka-connector/src/main/docs/camel-jpa-kafka-source-connector.adoc
new file mode 100644
index 0000000..85126b1
--- /dev/null
+++ b/connectors/camel-jpa-kafka-connector/src/main/docs/camel-jpa-kafka-source-connector.adoc
@@ -0,0 +1,72 @@
+// kafka-connector options: START
+[[camel-jpa-kafka-connector-source]]
+= camel-jpa-kafka-connector source configuration
+
+When using camel-jpa-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jpa source connector supports 46 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.entityType* | Entity class name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumResults* | Set the maximum number of results to retrieve on the Query. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namedQuery* | To use a named query. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nativeQuery* | To use a custom native query. You may want to use the option resultClass also when using native queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistenceUnit* | The JPA persistence unit used by default. | "camel" | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.query* | To use a custom query. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultClass* | Defines the type of the returned payload (we will call entityManager.createNativeQuery(nativeQuery, resultClass) instead of entityManager.createNativeQuery(nativeQuery)). Without this option, we will return an object array. Only has an affect when using in conjunction with native query when consuming data. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeDelete* | If true, the entity is deleted after it is consumed; if false, the entity is not deleted. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeLockEntity* | Specifies whether or not to set an exclusive lock on each entity bean while processing the results from polling. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteHandler* | To use a custom DeleteHandler to delete the row after the consumer is done processing the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lockModeType* | To configure the lock mode on the consumer. One of: [READ] [WRITE] [OPTIMISTIC] [OPTIMISTIC_FORCE_INCREMENT] [PESSIMISTIC_READ] [PESSIMISTIC_WRITE] [PESSIMISTIC_FORCE_INCREMENT] [NONE] | "PESSIMISTIC_WRITE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | An integer value to define the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to avoid polling many thousands of messages when starting up the server. Set a value of 0 or negative to disable. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preDeleteHandler* | To use a custom Pre-DeleteHandler to delete the row after the consumer has read the entity. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipLockedEntity* | To configure whether to use NOWAIT on lock and silently skip the entity. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Whether to run the consumer in transacted mode, by which all messages will either commit or rollback, when the entire batch has been processed. The default behavior (false) is to commit all the previously successfully processed messages, and only rollback the last failed message. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | This key/value mapping is used for building the query parameters. It is expected to be of the generic type java.util.Map where the keys are the named parameters of a given JPA query and the values are their corresponding effective values you want to select for. When it's used for producer, Simple expression can be used as a parameter value. It allows you to retrieve parameter values from the message body, header and etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.entityManagerProperties* | Additional properties for the entity manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.entityManagerFactory* | To use the EntityManagerFactory. This is strongly recommended to configure. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.transactionManager* | To use the PlatformTransactionManager for managing transactions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jslt-kafka-connector/pom.xml b/connectors/camel-jslt-kafka-connector/pom.xml
index 3c33cda..d2ef6c0 100644
--- a/connectors/camel-jslt-kafka-connector/pom.xml
+++ b/connectors/camel-jslt-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jslt-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jslt</name>
diff --git a/connectors/camel-jslt-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jslt-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jslt-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jslt-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jslt-kafka-connector/src/main/docs/camel-jslt-kafka-sink-connector.adoc b/connectors/camel-jslt-kafka-connector/src/main/docs/camel-jslt-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8850cf7
--- /dev/null
+++ b/connectors/camel-jslt-kafka-connector/src/main/docs/camel-jslt-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-jslt-kafka-connector-sink]]
+= camel-jslt-kafka-connector sink configuration
+
+When using camel-jslt-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jslt-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jslt sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prettyPrint* | If true, JSON in output message is pretty printed. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jslt.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jslt.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jslt.functions* | JSLT can be extended by plugging in functions written in Java. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-json-validator-kafka-connector/pom.xml b/connectors/camel-json-validator-kafka-connector/pom.xml
index 0f3fa12..92844da 100644
--- a/connectors/camel-json-validator-kafka-connector/pom.xml
+++ b/connectors/camel-json-validator-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-json-validator-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: json-validator</name>
diff --git a/connectors/camel-json-validator-kafka-connector/src/main/assembly/package.xml b/connectors/camel-json-validator-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-json-validator-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-json-validator-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-json-validator-kafka-connector/src/main/docs/camel-json-validator-kafka-sink-connector.adoc b/connectors/camel-json-validator-kafka-connector/src/main/docs/camel-json-validator-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f4366d1
--- /dev/null
+++ b/connectors/camel-json-validator-kafka-connector/src/main/docs/camel-json-validator-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-json-validator-kafka-connector-sink]]
+= camel-json-validator-kafka-connector sink configuration
+
+When using camel-json-validator-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-json-validator-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-json-validator sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether to fail if no body exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullHeader* | Whether to fail if no header exists when validating against a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To validate against a header instead of the message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | To use a custom ValidatorErrorHandler. The default error handler captures the errors and throws an exception. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLoader* | To use a custom schema loader allowing for adding custom format validation. The default implementation will create a schema loader with draft v4 support. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.json-validator.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.json-validator.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jt400-kafka-connector/pom.xml b/connectors/camel-jt400-kafka-connector/pom.xml
index 6766da7..78a32c6 100644
--- a/connectors/camel-jt400-kafka-connector/pom.xml
+++ b/connectors/camel-jt400-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-jt400-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: jt400</name>
diff --git a/connectors/camel-jt400-kafka-connector/src/main/assembly/package.xml b/connectors/camel-jt400-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-jt400-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-jt400-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-jt400-kafka-connector/src/main/docs/camel-jt400-kafka-sink-connector.adoc b/connectors/camel-jt400-kafka-connector/src/main/docs/camel-jt400-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f2daa0a
--- /dev/null
+++ b/connectors/camel-jt400-kafka-connector/src/main/docs/camel-jt400-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-jt400-kafka-connector-sink]]
+= camel-jt400-kafka-connector sink configuration
+
+When using camel-jt400-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jt400-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jt400 sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.userID* | Returns the ID of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.password* | Returns the password of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.systemName* | Returns the name of the AS/400 system. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.objectPath* | Returns the fully qualified integrated file system path name of the target object of this endpoint. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.type* | Whether to work with data queues or remote program call One of: [DTAQ] [PGM] [SRVPGM] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.ccsid* | Sets the CCSID to use for the connection with the AS/400 system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.format* | Sets the data format for sending messages. One of: [text] [binary] | "text" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.guiAvailable* | Sets whether AS/400 prompting is enabled in the environment running Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyed* | Whether to use keyed or non-keyed data queues. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.searchKey* | Search key for keyed data queues. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputFieldsIdxArray* | Specifies which fields (program parameters) are output parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputFieldsLengthArray* | Specifies the fields (program parameters) length as in the AS/400 program definition. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.procedureName* | Procedure name from a service program to call | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secured* | Whether connections to AS/400 are secured with SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.connectionPool* | Default connection pool used by the component. Note that this pool is lazily initialized. This is because in a scenario where the user always provides a pool, it would be wasteful for Camel to initialize and keep an idle pool. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-jt400-kafka-connector/src/main/docs/camel-jt400-kafka-source-connector.adoc b/connectors/camel-jt400-kafka-connector/src/main/docs/camel-jt400-kafka-source-connector.adoc
new file mode 100644
index 0000000..55b1fba
--- /dev/null
+++ b/connectors/camel-jt400-kafka-connector/src/main/docs/camel-jt400-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-jt400-kafka-connector-source]]
+= camel-jt400-kafka-connector source configuration
+
+When using camel-jt400-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jt400-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jt400 source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.userID* | Returns the ID of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.password* | Returns the password of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.systemName* | Returns the name of the AS/400 system. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.objectPath* | Returns the fully qualified integrated file system path name of the target object of this endpoint. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.type* | Whether to work with data queues or remote program call One of: [DTAQ] [PGM] [SRVPGM] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.ccsid* | Sets the CCSID to use for the connection with the AS/400 system. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.format* | Sets the data format for sending messages. One of: [text] [binary] | "text" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.guiAvailable* | Sets whether AS/400 prompting is enabled in the environment running Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyed* | Whether to use keyed or non-keyed data queues. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchKey* | Search key for keyed data queues. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeout* | Timeout in millis the consumer will wait while trying to read a new message of the data queue. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchType* | Search type such as EQ for equal etc. One of: [EQ] [NE] [LT] [LE] [GT] [GE] | "EQ" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secured* | Whether connections to AS/400 are secured with SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.connectionPool* | Default connection pool used by the component. Note that this pool is lazily initialized. This is because in a scenario where the user always provides a pool, it would be wasteful for Camel to initialize and keep an idle pool. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kafka-connecotr-java-header.txt b/connectors/camel-kafka-connecotr-java-header.txt
index f974c9a..ae6f28c 100644
--- a/connectors/camel-kafka-connecotr-java-header.txt
+++ b/connectors/camel-kafka-connecotr-java-header.txt
@@ -13,4 +13,4 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */
\ No newline at end of file
+ */
diff --git a/connectors/camel-kafka-connector-fix-dependencies.properties b/connectors/camel-kafka-connector-fix-dependencies.properties
index 3a8fc22..d5666ee 100644
--- a/connectors/camel-kafka-connector-fix-dependencies.properties
+++ b/connectors/camel-kafka-connector-fix-dependencies.properties
@@ -22,6 +22,6 @@
 global=org.apache.camel.kafkaconnector:camel-kafka-connector
 
 # we add a default connection factory maven dependency (variables can be used as ${varname})
-camel-sjms2=org.apache.activemq:activemq-client
+camel-sjms2=org.apache.activemq:activemq-client::compile
 exclude_camel-sjms2=
-additional_properties_camel-sjms2=camel.component.sjms2.connection-factory=#class:org.apache.activemq.ActiveMQConnectionFactory,camel.component.sjms2.connection-factory.brokerURL=tcp://localhost:61616
\ No newline at end of file
+additional_properties_camel-sjms2=camel.component.sjms2.connection-factory=#class:org.apache.activemq.ActiveMQConnectionFactory,camel.component.sjms2.connection-factory.brokerURL=tcp://localhost:61616
diff --git a/connectors/camel-kafka-kafka-connector/pom.xml b/connectors/camel-kafka-kafka-connector/pom.xml
index db5a1fc..b8cda1c 100644
--- a/connectors/camel-kafka-kafka-connector/pom.xml
+++ b/connectors/camel-kafka-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kafka-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kafka</name>
diff --git a/connectors/camel-kafka-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kafka-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kafka-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kafka-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kafka-kafka-connector/src/main/docs/camel-kafka-kafka-sink-connector.adoc b/connectors/camel-kafka-kafka-connector/src/main/docs/camel-kafka-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8b84a7a
--- /dev/null
+++ b/connectors/camel-kafka-kafka-connector/src/main/docs/camel-kafka-kafka-sink-connector.adoc
@@ -0,0 +1,98 @@
+// kafka-connector options: START
+[[camel-kafka-kafka-connector-sink]]
+= camel-kafka-kafka-connector sink configuration
+
+When using camel-kafka-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kafka-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kafka sink connector supports 72 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | Name of the topic to use. On the consumer you can use comma to separate multiple topics. A producer can only send a message to a single topic. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.additionalProperties* | Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | The client id is a user-specified string sent in each request to help trace calls. It should logically identify the application making the request. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectBackoffMaxMs* | The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms. | "1000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferMemorySize* | The total bytes of memory the producer can use to buffer records waiting to be sent to the server. If records are sent faster than they can be delivered to the server the producer will either block or throw an exception based on the preference specified by block.on.buffer.full.This setting should correspond roughly to the total memory the producer will use, but is not a hard bound since not all memory the producer uses is used for buffering. Some additional memory will be used for compression (if compression is enabled) as well as for maintaining in-flight requests. | "33554432" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionCodec* | This parameter allows you to specify the compression codec for all data generated by this producer. Valid values are none, gzip and snappy. One of: [none] [gzip] [snappy] [lz4] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionMaxIdleMs* | Close idle connections after the number of milliseconds specified by this config. | "540000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableIdempotence* | If set to 'true' the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer retries may write duplicates of the retried message in the stream. If set to true this option will require max.in.flight.requests.per.connection to be set to 1 and retries cannot be zero and additionally acks must be set to 'all'. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kafkaHeaderSerializer* | To use a custom KafkaHeaderSerializer to serialize kafka headers values | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The record key (or null if no key is specified). If this option has been configured then it take precedence over header KafkaConstants#KEY | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keySerializerClass* | The serializer class for keys (defaults to the same as for messages if nothing is given). | "org.apache.kafka.common.serialization.StringSerializer" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lingerMs* | The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay�that is, rather than immediately sending out a record the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if we have fewer than this many bytes accumulated for this partition we will 'linger' for the specified time waiting for more records to show up. This setting defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would have the effect of reducing the number of requests sent but would add up to 5ms of latency to records sent in the absense of load. | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxBlockMs* | The configuration controls how long sending to kafka will block. These methods can be blocked for multiple reasons. For e.g: buffer full, metadata unavailable.This configuration imposes maximum limit on the total time spent in fetching metadata, serialization of key and value, partitioning and allocation of buffer memory when doing a send(). In case of partitionsFor(), this configuration imposes a maximum time threshold on waiting for metadata | "60000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInFlightRequest* | The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled). | "5" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRequestSize* | The maximum size of a request. This is also effectively a cap on the maximum record size. Note that the server has its own cap on record size which may be different from this. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests. | "1048576" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metadataMaxAgeMs* | The period of time in milliseconds after which we force a refresh of metadata even if we haven't seen any partition leadership changes to proactively discover any new brokers or partitions. | "300000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricReporters* | A list of classes to use as metrics reporters. Implementing the MetricReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricsSampleWindowMs* | The number of samples maintained to compute metrics. | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noOfMetricsSample* | The number of samples maintained to compute metrics. | "2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.partitioner* | The partitioner class for partitioning messages amongst sub-topics. The default partitioner is based on the hash of the key. | "org.apache.kafka.clients.producer.internals.DefaultPartitioner" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.partitionKey* | The partition to which the record will be sent (or null if no partition was specified). If this option has been configured then it take precedence over header KafkaConstants#PARTITION_KEY | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerBatchSize* | The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. This helps performance on both the client and the server. This configuration controls the default batch size in bytes. No attempt will be made to batch records larger than this size.Requests sent to brokers will contain multiple batches, one for each partition with data available to be sent.A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records. | "16384" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueBufferingMaxMessages* | The maximum number of unsent messages that can be queued up the producer when using async mode before either the producer must be blocked or data must be dropped. | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferBytes* | The size of the TCP receive buffer (SO_RCVBUF) to use when reading data. | "65536" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectBackoffMs* | The amount of time to wait before attempting to reconnect to a given host. This avoids repeatedly connecting to a host in a tight loop. This backoff applies to all requests sent by the consumer to the broker. | "50" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recordMetadata* | Whether the producer should store the RecordMetadata results from sending to Kafka. The results are stored in a List containing the RecordMetadata metadata's. The list is stored on a header with the key KafkaConstants#KAFKA_RECORDMETA | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestRequiredAcks* | The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are common: acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won't generally know of any failures). The offset given back for each record will always be set to -1. acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost. acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. One of: [-1] [0] [1] [all] | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutMs* | The amount of time the broker will wait trying to meet the request.required.acks requirement before sending back an error to the client. | "305000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retries* | Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. Note that this retry is no different than if the client resent the record upon receiving the error. Allowing retries will potentially change the ordering of records because if two records are sent to a single partition, and the first fails and is retried but the second succeeds, then the second record may appear first. | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryBackoffMs* | Before each retry, the producer refreshes the metadata of relevant topics to see if a new leader has been elected. Since leader election takes a bit of time, this property specifies the amount of time that the producer waits before refreshing the metadata. | "100" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferBytes* | Socket write buffer size | "131072" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serializerClass* | The serializer class for messages. | "org.apache.kafka.common.serialization.StringSerializer" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerPool* | To use a custom worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerPoolCoreSize* | Number of core threads for the worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. | "10" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerPoolMaxSize* | Maximum number of threads for the worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. | "20" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.interceptorClasses* | Sets interceptors for producer or consumers. Producer interceptors have to be classes implementing org.apache.kafka.clients.producer.ProducerInterceptor Consumer interceptors have to be classes implementing org.apache.kafka.clients.consumer.ConsumerInterceptor Note that if you use Producer interceptor on a consumer it will throw a class cast exception in runtime | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosBeforeReloginMinTime* | Login thread sleep time between refresh attempts. | "60000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosInitCmd* | Kerberos kinit command path. Default is /usr/bin/kinit | "/usr/bin/kinit" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosPrincipalToLocalRules* | A list of rules for mapping from principal names to short names (typically operating system usernames). The rules are evaluated in order and the first rule that matches a principal name is used to map it to a short name. Any later rules in the list are ignored. By default, principal names of the form \{username\}/\{hostname\}\{REALM\} are mapped to \{username\}. For more details on the format please see the security authorization and acls documentation.. Multiple values can be separated by comma | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosRenewJitter* | Percentage of random jitter added to the renewal time. | "0.05" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosRenewWindowFactor* | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. | "0.8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saslJaasConfig* | Expose the kafka sasl.jaas.config parameter Example: org.apache.kafka.common.security.plain.PlainLoginModule required username=USERNAME password=PASSWORD; | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saslKerberosServiceName* | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saslMechanism* | The Simple Authentication and Security Layer (SASL) Mechanism used. For the valid values see a href= \http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml\http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml | "GSSAPI" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProtocol* | Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT and SSL are supported | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslCipherSuites* | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol.By default all the available cipher suites are supported. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | SSL configuration using a Camel SSLContextParameters object. If configured it's applied before the other SSL endpoint parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslEnabledProtocols* | The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1 and TLSv1 are enabled by default. | "TLSv1.2,TLSv1.1,TLSv1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslEndpointAlgorithm* | The endpoint identification algorithm to validate server hostname using server certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeymanagerAlgorithm* | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | "SunX509" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeyPassword* | The password of the private key in the key store file. This is optional for client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeystoreLocation* | The location of the key store file. This is optional for client and can be used for two-way authentication for client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeystorePassword* | The store password for the key store file.This is optional for client and only needed if ssl.keystore.location is configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeystoreType* | The file format of the key store file. This is optional for client. Default value is JKS | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProtocol* | The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. | "TLS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProvider* | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTrustmanagerAlgorithm* | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | "PKIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTruststoreLocation* | The location of the trust store file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTruststorePassword* | The password for the trust store file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTruststoreType* | The file format of the trust store file. Default value is JKS. | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaRegistryURL* | URL of the Confluent Platform schema registry servers to use. The format is host1:port1,host2:port2. This is known as schema.registry.url in the Confluent Platform documentation. This option is only available in the Confluent Platform (not standard Apache Kafka) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.configuration* | Allows to pre-configure the Kafka component with common options that the endpoints will reuse. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.workerPool* | To use a shared custom worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. If using this option then you must handle the lifecycle of the thread pool to shut the pool down when no longer needed. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kafka-kafka-connector/src/main/docs/camel-kafka-kafka-source-connector.adoc b/connectors/camel-kafka-kafka-connector/src/main/docs/camel-kafka-kafka-source-connector.adoc
new file mode 100644
index 0000000..4f8bd08
--- /dev/null
+++ b/connectors/camel-kafka-kafka-connector/src/main/docs/camel-kafka-kafka-source-connector.adoc
@@ -0,0 +1,95 @@
+// kafka-connector options: START
+[[camel-kafka-kafka-connector-source]]
+= camel-kafka-kafka-connector source configuration
+
+When using camel-kafka-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kafka-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kafka source connector supports 69 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | Name of the topic to use. On the consumer you can use comma to separate multiple topics. A producer can only send a message to a single topic. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | The client id is a user-specified string sent in each request to help trace calls. It should logically identify the application making the request. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectBackoffMaxMs* | The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms. | "1000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowManualCommit* | Whether to allow doing manual commits via KafkaManualCommit. If this option is enabled then an instance of KafkaManualCommit is stored on the Exchange message header, which allows end users to access this API and perform manual offset commits via the Kafka consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCommitEnable* | If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer. This committed offset will be used when the process fails as the position from which the new consumer will begin. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCommitIntervalMs* | The frequency in ms that the consumer offsets are committed to zookeeper. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCommitOnStop* | Whether to perform an explicit auto commit when the consumer stops to ensure the broker has a commit from the last consumed message. This requires the option autoCommitEnable is turned on. The possible values are: sync, async, or none. And sync is the default value. One of: [sync] [async] [none] | "sync" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoOffsetReset* | What to do when there is no initial offset in ZooKeeper or if an offset is out of range: earliest : automatically reset the offset to the earliest offset latest : automatically reset the offset to the latest offset fail: throw exception to the consumer One of: [latest] [earliest] [none] | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.breakOnFirstError* | This options controls what happens when a consumer is processing an exchange and it fails. If the option is false then the consumer continues to the next message and processes it. If the option is true then the consumer breaks out, and will seek back to offset of the message that caused a failure, and then re-attempt to process this message. However this can lead to endless processing of the same message if its bound to fail every time, eg a poison message. Therefore its recommended to deal with that for example by using Camel's error handler. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkCrcs* | Automatically check the CRC32 of the records consumed. This ensures no on-the-wire or on-disk corruption to the messages occurred. This check adds some overhead, so it may be disabled in cases seeking extreme performance. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerRequestTimeoutMs* | The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. | "40000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumersCount* | The number of consumers that connect to kafka server | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerStreams* | Number of concurrent consumers on the consumer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchMaxBytes* | The maximum amount of data the server should return for a fetch request This is not an absolute maximum, if the first message in the first non-empty partition of the fetch is larger than this value, the message will still be returned to ensure that the consumer can make progress. The maximum message size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). Note that the consumer performs multiple fetches in parallel. | "52428800" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchMinBytes* | The minimum amount of data the server should return for a fetch request. If insufficient data is available the request will wait for that much data to accumulate before answering the request. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchWaitMaxMs* | The maximum amount of time the server will block before answering the fetch request if there isn't sufficient data to immediately satisfy fetch.min.bytes | "500" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupId* | A string that uniquely identifies the group of consumer processes to which this consumer belongs. By setting the same group id multiple processes indicate that they are all part of the same consumer group. This option is required for consumers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | The expected time between heartbeats to the consumer coordinator when using Kafka's group management facilities. Heartbeats are used to ensure that the consumer's session stays active and to facilitate rebalancing when new consumers join or leave the group. The value must be set lower than session.timeout.ms, but typically should be set no higher than 1/3 of that value. It can be adjusted even lower to control the expected time for normal rebalances. | "3000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kafkaHeaderDeserializer* | To use a custom KafkaHeaderDeserializer to deserialize kafka headers values | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyDeserializer* | Deserializer class for key that implements the Deserializer interface. | "org.apache.kafka.common.serialization.StringDeserializer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPartitionFetchBytes* | The maximum amount of data per-partition the server will return. The maximum total memory used for a request will be #partitions max.partition.fetch.bytes. This size must be at least as large as the maximum message size the server allows or else it is possible for the producer to send messages larger than the consumer can fetch. If that happens, the consumer can get stuck trying to fetch a large message on a certain partition. | "1048576" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPollIntervalMs* | The maximum delay between invocations of poll() when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records. If poll() is not called before expiration of this timeout, then the consumer is considered failed and the group will rebalance in order to reassign the partitions to another member. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPollRecords* | The maximum number of records returned in a single call to poll() | "500" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetRepository* | The offset repository to use in order to locally store the offset of each partition of the topic. Defining one will disable the autocommit. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.partitionAssignor* | The class name of the partition assignment strategy that the client will use to distribute partition ownership amongst consumer instances when group management is used | "org.apache.kafka.clients.consumer.RangeAssignor" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeoutMs* | The timeout used when polling the KafkaConsumer. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.seekTo* | Set if KafkaConsumer will read from beginning or end on startup: beginning : read from beginning end : read from end This is replacing the earlier property seekToBeginning One of: [beginning] [end] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionTimeoutMs* | The timeout used to detect failures when using Kafka's group management facilities. | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.specificAvroReader* | This enables the use of a specific Avro reader for use with the Confluent Platform schema registry and the io.confluent.kafka.serializers.KafkaAvroDeserializer. This option is only available in the Confluent Platform (not standard Apache Kafka) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topicIsPattern* | Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueDeserializer* | Deserializer class for value that implements the Deserializer interface. | "org.apache.kafka.common.serialization.StringDeserializer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.interceptorClasses* | Sets interceptors for producer or consumers. Producer interceptors have to be classes implementing org.apache.kafka.clients.producer.ProducerInterceptor Consumer interceptors have to be classes implementing org.apache.kafka.clients.consumer.ConsumerInterceptor Note that if you use Producer interceptor on a consumer it will throw a class cast exception in runtime | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosBeforeReloginMinTime* | Login thread sleep time between refresh attempts. | "60000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosInitCmd* | Kerberos kinit command path. Default is /usr/bin/kinit | "/usr/bin/kinit" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosPrincipalToLocal Rules* | A list of rules for mapping from principal names to short names (typically operating system usernames). The rules are evaluated in order and the first rule that matches a principal name is used to map it to a short name. Any later rules in the list are ignored. By default, principal names of the form \{username\}/\{hostname\}\{REALM\} are mapped to \{username\}. For more details on the format please see the security authorization and acls documentation.. Multiple values can be separated by comma | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosRenewJitter* | Percentage of random jitter added to the renewal time. | "0.05" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosRenewWindowFactor* | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. | "0.8" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.saslJaasConfig* | Expose the kafka sasl.jaas.config parameter Example: org.apache.kafka.common.security.plain.PlainLoginModule required username=USERNAME password=PASSWORD; | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.saslKerberosServiceName* | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.saslMechanism* | The Simple Authentication and Security Layer (SASL) Mechanism used. For the valid values see a href= \http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml\http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml | "GSSAPI" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProtocol* | Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT and SSL are supported | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslCipherSuites* | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol.By default all the available cipher suites are supported. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | SSL configuration using a Camel SSLContextParameters object. If configured it's applied before the other SSL endpoint parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslEnabledProtocols* | The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1 and TLSv1 are enabled by default. | "TLSv1.2,TLSv1.1,TLSv1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslEndpointAlgorithm* | The endpoint identification algorithm to validate server hostname using server certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslKeymanagerAlgorithm* | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | "SunX509" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslKeystoreType* | The file format of the key store file. This is optional for client. Default value is JKS | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProtocol* | The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. | "TLS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProvider* | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslTrustmanagerAlgorithm* | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | "PKIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslTruststoreType* | The file format of the trust store file. Default value is JKS. | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaRegistryURL* | URL of the Confluent Platform schema registry servers to use. The format is host1:port1,host2:port2. This is known as schema.registry.url in the Confluent Platform documentation. This option is only available in the Confluent Platform (not standard Apache Kafka) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.configuration* | Allows to pre-configure the Kafka component with common options that the endpoints will reuse. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.allowManualCommit* | Whether to allow doing manual commits via KafkaManualCommit. If this option is enabled then an instance of KafkaManualCommit is stored on the Exchange message header, which allows end users to access this API and perform manual offset commits via the Kafka consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.breakOnFirstError* | This options controls what happens when a consumer is processing an exchange and it fails. If the option is false then the consumer continues to the next message and processes it. If the option is true then the consumer breaks out, and will seek back to offset of the message that caused a failure, and then re-attempt to process this message. However this can lead to endless processing of the same message if its bound to fail every time, eg a poison message. Therefore its recommended to deal with that for example by using Camel's error handler. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.kafkaManualCommitFactory* | Factory to use for creating KafkaManualCommit instances. This allows to plugin a custom factory to create custom KafkaManualCommit instances in case special logic is needed when doing manual commits that deviates from the default implementation that comes out of the box. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.workerPool* | To use a shared custom worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. If using this option then you must handle the lifecycle of the thread pool to shut the pool down when no longer needed. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-config-maps-kafka-connector/pom.xml b/connectors/camel-kubernetes-config-maps-kafka-connector/pom.xml
index 6482d9e..0c93cb5 100644
--- a/connectors/camel-kubernetes-config-maps-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-config-maps-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-config-maps-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-config-maps</name>
diff --git a/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/docs/camel-kubernetes-config-maps-kafka-sink-connector.adoc b/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/docs/camel-kubernetes-config-maps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b72d15b
--- /dev/null
+++ b/connectors/camel-kubernetes-config-maps-kafka-connector/src/main/docs/camel-kubernetes-config-maps-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-config-maps-kafka-connector-sink]]
+= camel-kubernetes-config-maps-kafka-connector sink configuration
+
+When using camel-kubernetes-config-maps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-config-maps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-config-maps sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-config-maps.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-config-maps.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-deployments-kafka-connector/pom.xml b/connectors/camel-kubernetes-deployments-kafka-connector/pom.xml
index f5c73bf..11b8285 100644
--- a/connectors/camel-kubernetes-deployments-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-deployments-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-deployments-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-deployments</name>
diff --git a/connectors/camel-kubernetes-deployments-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-deployments-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-deployments-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-deployments-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-deployments-kafka-connector/src/main/docs/camel-kubernetes-deployments-kafka-sink-connector.adoc b/connectors/camel-kubernetes-deployments-kafka-connector/src/main/docs/camel-kubernetes-deployments-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cf5344c
--- /dev/null
+++ b/connectors/camel-kubernetes-deployments-kafka-connector/src/main/docs/camel-kubernetes-deployments-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-deployments-kafka-connector-sink]]
+= camel-kubernetes-deployments-kafka-connector sink configuration
+
+When using camel-kubernetes-deployments-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-deployments-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-deployments sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-deployments-kafka-connector/src/main/docs/camel-kubernetes-deployments-kafka-source-connector.adoc b/connectors/camel-kubernetes-deployments-kafka-connector/src/main/docs/camel-kubernetes-deployments-kafka-source-connector.adoc
new file mode 100644
index 0000000..668f0bd
--- /dev/null
+++ b/connectors/camel-kubernetes-deployments-kafka-connector/src/main/docs/camel-kubernetes-deployments-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-deployments-kafka-connector-source]]
+= camel-kubernetes-deployments-kafka-connector source configuration
+
+When using camel-kubernetes-deployments-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-deployments-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-deployments source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-hpa-kafka-connector/pom.xml b/connectors/camel-kubernetes-hpa-kafka-connector/pom.xml
index 0e3804c..1571356 100644
--- a/connectors/camel-kubernetes-hpa-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-hpa-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-hpa-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-hpa</name>
diff --git a/connectors/camel-kubernetes-hpa-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-hpa-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-hpa-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-hpa-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-hpa-kafka-connector/src/main/docs/camel-kubernetes-hpa-kafka-sink-connector.adoc b/connectors/camel-kubernetes-hpa-kafka-connector/src/main/docs/camel-kubernetes-hpa-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2983153
--- /dev/null
+++ b/connectors/camel-kubernetes-hpa-kafka-connector/src/main/docs/camel-kubernetes-hpa-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-hpa-kafka-connector-sink]]
+= camel-kubernetes-hpa-kafka-connector sink configuration
+
+When using camel-kubernetes-hpa-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-hpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-hpa sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-hpa-kafka-connector/src/main/docs/camel-kubernetes-hpa-kafka-source-connector.adoc b/connectors/camel-kubernetes-hpa-kafka-connector/src/main/docs/camel-kubernetes-hpa-kafka-source-connector.adoc
new file mode 100644
index 0000000..adfc7e1
--- /dev/null
+++ b/connectors/camel-kubernetes-hpa-kafka-connector/src/main/docs/camel-kubernetes-hpa-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-hpa-kafka-connector-source]]
+= camel-kubernetes-hpa-kafka-connector source configuration
+
+When using camel-kubernetes-hpa-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-hpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-hpa source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-job-kafka-connector/pom.xml b/connectors/camel-kubernetes-job-kafka-connector/pom.xml
index b9cca62..7f4cbe6 100644
--- a/connectors/camel-kubernetes-job-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-job-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-job-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-job</name>
diff --git a/connectors/camel-kubernetes-job-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-job-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-job-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-job-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-job-kafka-connector/src/main/docs/camel-kubernetes-job-kafka-sink-connector.adoc b/connectors/camel-kubernetes-job-kafka-connector/src/main/docs/camel-kubernetes-job-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0e92f17
--- /dev/null
+++ b/connectors/camel-kubernetes-job-kafka-connector/src/main/docs/camel-kubernetes-job-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-job-kafka-connector-sink]]
+= camel-kubernetes-job-kafka-connector sink configuration
+
+When using camel-kubernetes-job-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-job-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-job sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-job-kafka-connector/src/main/docs/camel-kubernetes-job-kafka-source-connector.adoc b/connectors/camel-kubernetes-job-kafka-connector/src/main/docs/camel-kubernetes-job-kafka-source-connector.adoc
new file mode 100644
index 0000000..97b281f
--- /dev/null
+++ b/connectors/camel-kubernetes-job-kafka-connector/src/main/docs/camel-kubernetes-job-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-job-kafka-connector-source]]
+= camel-kubernetes-job-kafka-connector source configuration
+
+When using camel-kubernetes-job-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-job-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-job source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-namespaces-kafka-connector/pom.xml b/connectors/camel-kubernetes-namespaces-kafka-connector/pom.xml
index 77865dc..2a1d5ce 100644
--- a/connectors/camel-kubernetes-namespaces-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-namespaces-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-namespaces-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-namespaces</name>
diff --git a/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/docs/camel-kubernetes-namespaces-kafka-sink-connector.adoc b/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/docs/camel-kubernetes-namespaces-kafka-sink-connector.adoc
new file mode 100644
index 0000000..83be393
--- /dev/null
+++ b/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/docs/camel-kubernetes-namespaces-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-namespaces-kafka-connector-sink]]
+= camel-kubernetes-namespaces-kafka-connector sink configuration
+
+When using camel-kubernetes-namespaces-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-namespaces-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-namespaces sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/docs/camel-kubernetes-namespaces-kafka-source-connector.adoc b/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/docs/camel-kubernetes-namespaces-kafka-source-connector.adoc
new file mode 100644
index 0000000..d0f8e93
--- /dev/null
+++ b/connectors/camel-kubernetes-namespaces-kafka-connector/src/main/docs/camel-kubernetes-namespaces-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-namespaces-kafka-connector-source]]
+= camel-kubernetes-namespaces-kafka-connector source configuration
+
+When using camel-kubernetes-namespaces-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-namespaces-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-namespaces source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-nodes-kafka-connector/pom.xml b/connectors/camel-kubernetes-nodes-kafka-connector/pom.xml
index 7420cf7..3da17e4 100644
--- a/connectors/camel-kubernetes-nodes-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-nodes-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-nodes-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-nodes</name>
diff --git a/connectors/camel-kubernetes-nodes-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-nodes-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-nodes-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-nodes-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-nodes-kafka-connector/src/main/docs/camel-kubernetes-nodes-kafka-sink-connector.adoc b/connectors/camel-kubernetes-nodes-kafka-connector/src/main/docs/camel-kubernetes-nodes-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1efc550
--- /dev/null
+++ b/connectors/camel-kubernetes-nodes-kafka-connector/src/main/docs/camel-kubernetes-nodes-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-nodes-kafka-connector-sink]]
+= camel-kubernetes-nodes-kafka-connector sink configuration
+
+When using camel-kubernetes-nodes-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-nodes-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-nodes sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-nodes-kafka-connector/src/main/docs/camel-kubernetes-nodes-kafka-source-connector.adoc b/connectors/camel-kubernetes-nodes-kafka-connector/src/main/docs/camel-kubernetes-nodes-kafka-source-connector.adoc
new file mode 100644
index 0000000..fa37757
--- /dev/null
+++ b/connectors/camel-kubernetes-nodes-kafka-connector/src/main/docs/camel-kubernetes-nodes-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-nodes-kafka-connector-source]]
+= camel-kubernetes-nodes-kafka-connector source configuration
+
+When using camel-kubernetes-nodes-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-nodes-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-nodes source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/pom.xml b/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/pom.xml
index db8b1fd..94176d1 100644
--- a/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-persistent-volumes-claims-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-persistent-volumes-claims</name>
diff --git a/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/docs/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc b/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/docs/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc
new file mode 100644
index 0000000..da2aa8a
--- /dev/null
+++ b/connectors/camel-kubernetes-persistent-volumes-claims-kafka-connector/src/main/docs/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-persistent-volumes-claims-kafka-connector-sink]]
+= camel-kubernetes-persistent-volumes-claims-kafka-connector sink configuration
+
+When using camel-kubernetes-persistent-volumes-claims-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-persistent-volumes-claims-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-persistent-volumes-claims sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-persistent-volumes-claims.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-persistent-volumes-claims.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-persistent-volumes-kafka-connector/pom.xml b/connectors/camel-kubernetes-persistent-volumes-kafka-connector/pom.xml
index 8966b0a..252813c 100644
--- a/connectors/camel-kubernetes-persistent-volumes-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-persistent-volumes-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-persistent-volumes-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-persistent-volumes</name>
diff --git a/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/docs/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc b/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/docs/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b06a1e5
--- /dev/null
+++ b/connectors/camel-kubernetes-persistent-volumes-kafka-connector/src/main/docs/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-persistent-volumes-kafka-connector-sink]]
+= camel-kubernetes-persistent-volumes-kafka-connector sink configuration
+
+When using camel-kubernetes-persistent-volumes-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-persistent-volumes-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-persistent-volumes sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-persistent-volumes.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-persistent-volumes.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-pods-kafka-connector/pom.xml b/connectors/camel-kubernetes-pods-kafka-connector/pom.xml
index 0e536bb..d5f41d0 100644
--- a/connectors/camel-kubernetes-pods-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-pods-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-pods-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-pods</name>
diff --git a/connectors/camel-kubernetes-pods-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-pods-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-pods-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-pods-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-pods-kafka-connector/src/main/docs/camel-kubernetes-pods-kafka-sink-connector.adoc b/connectors/camel-kubernetes-pods-kafka-connector/src/main/docs/camel-kubernetes-pods-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0d14c97
--- /dev/null
+++ b/connectors/camel-kubernetes-pods-kafka-connector/src/main/docs/camel-kubernetes-pods-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-pods-kafka-connector-sink]]
+= camel-kubernetes-pods-kafka-connector sink configuration
+
+When using camel-kubernetes-pods-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-pods-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-pods sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-pods-kafka-connector/src/main/docs/camel-kubernetes-pods-kafka-source-connector.adoc b/connectors/camel-kubernetes-pods-kafka-connector/src/main/docs/camel-kubernetes-pods-kafka-source-connector.adoc
new file mode 100644
index 0000000..18470c2
--- /dev/null
+++ b/connectors/camel-kubernetes-pods-kafka-connector/src/main/docs/camel-kubernetes-pods-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-pods-kafka-connector-source]]
+= camel-kubernetes-pods-kafka-connector source configuration
+
+When using camel-kubernetes-pods-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-pods-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-pods source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-replication-controllers-kafka-connector/pom.xml b/connectors/camel-kubernetes-replication-controllers-kafka-connector/pom.xml
index 9f0e2ad..3e08610 100644
--- a/connectors/camel-kubernetes-replication-controllers-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-replication-controllers-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-replication-controllers-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-replication-controllers</name>
diff --git a/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/docs/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc b/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/docs/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6f9b43d
--- /dev/null
+++ b/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/docs/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-replication-controllers-kafka-connector-sink]]
+= camel-kubernetes-replication-controllers-kafka-connector sink configuration
+
+When using camel-kubernetes-replication-controllers-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-replication-controllers-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-replication-controllers sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/docs/camel-kubernetes-replication-controllers-kafka-source-connector.adoc b/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/docs/camel-kubernetes-replication-controllers-kafka-source-connector.adoc
new file mode 100644
index 0000000..d0f39ca
--- /dev/null
+++ b/connectors/camel-kubernetes-replication-controllers-kafka-connector/src/main/docs/camel-kubernetes-replication-controllers-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-replication-controllers-kafka-connector-source]]
+= camel-kubernetes-replication-controllers-kafka-connector source configuration
+
+When using camel-kubernetes-replication-controllers-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-replication-controllers-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-replication-controllers source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.bridge ErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-resources-quota-kafka-connector/pom.xml b/connectors/camel-kubernetes-resources-quota-kafka-connector/pom.xml
index 2cbce42..c8cb4d1 100644
--- a/connectors/camel-kubernetes-resources-quota-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-resources-quota-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-resources-quota-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-resources-quota</name>
diff --git a/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/docs/camel-kubernetes-resources-quota-kafka-sink-connector.adoc b/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/docs/camel-kubernetes-resources-quota-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a4796c4
--- /dev/null
+++ b/connectors/camel-kubernetes-resources-quota-kafka-connector/src/main/docs/camel-kubernetes-resources-quota-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-resources-quota-kafka-connector-sink]]
+= camel-kubernetes-resources-quota-kafka-connector sink configuration
+
+When using camel-kubernetes-resources-quota-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-resources-quota-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-resources-quota sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-resources-quota.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-resources-quota.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-secrets-kafka-connector/pom.xml b/connectors/camel-kubernetes-secrets-kafka-connector/pom.xml
index 5f4415b..6cfbe43 100644
--- a/connectors/camel-kubernetes-secrets-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-secrets-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-secrets-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-secrets</name>
diff --git a/connectors/camel-kubernetes-secrets-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-secrets-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-secrets-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-secrets-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-secrets-kafka-connector/src/main/docs/camel-kubernetes-secrets-kafka-sink-connector.adoc b/connectors/camel-kubernetes-secrets-kafka-connector/src/main/docs/camel-kubernetes-secrets-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4afadf2
--- /dev/null
+++ b/connectors/camel-kubernetes-secrets-kafka-connector/src/main/docs/camel-kubernetes-secrets-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-secrets-kafka-connector-sink]]
+= camel-kubernetes-secrets-kafka-connector sink configuration
+
+When using camel-kubernetes-secrets-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-secrets-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-secrets sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-secrets.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-secrets.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-service-accounts-kafka-connector/pom.xml b/connectors/camel-kubernetes-service-accounts-kafka-connector/pom.xml
index efb908b..8cbbc75 100644
--- a/connectors/camel-kubernetes-service-accounts-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-service-accounts-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-service-accounts-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-service-accounts</name>
diff --git a/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/docs/camel-kubernetes-service-accounts-kafka-sink-connector.adoc b/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/docs/camel-kubernetes-service-accounts-kafka-sink-connector.adoc
new file mode 100644
index 0000000..383b491
--- /dev/null
+++ b/connectors/camel-kubernetes-service-accounts-kafka-connector/src/main/docs/camel-kubernetes-service-accounts-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-service-accounts-kafka-connector-sink]]
+= camel-kubernetes-service-accounts-kafka-connector sink configuration
+
+When using camel-kubernetes-service-accounts-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-service-accounts-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-service-accounts sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-service-accounts.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-service-accounts.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-services-kafka-connector/pom.xml b/connectors/camel-kubernetes-services-kafka-connector/pom.xml
index f259ed7..b0f9198 100644
--- a/connectors/camel-kubernetes-services-kafka-connector/pom.xml
+++ b/connectors/camel-kubernetes-services-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kubernetes-services-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kubernetes-services</name>
diff --git a/connectors/camel-kubernetes-services-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kubernetes-services-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kubernetes-services-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kubernetes-services-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kubernetes-services-kafka-connector/src/main/docs/camel-kubernetes-services-kafka-sink-connector.adoc b/connectors/camel-kubernetes-services-kafka-connector/src/main/docs/camel-kubernetes-services-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3ea8399
--- /dev/null
+++ b/connectors/camel-kubernetes-services-kafka-connector/src/main/docs/camel-kubernetes-services-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-services-kafka-connector-sink]]
+= camel-kubernetes-services-kafka-connector sink configuration
+
+When using camel-kubernetes-services-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-services-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-services sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kubernetes-services-kafka-connector/src/main/docs/camel-kubernetes-services-kafka-source-connector.adoc b/connectors/camel-kubernetes-services-kafka-connector/src/main/docs/camel-kubernetes-services-kafka-source-connector.adoc
new file mode 100644
index 0000000..18196fd
--- /dev/null
+++ b/connectors/camel-kubernetes-services-kafka-connector/src/main/docs/camel-kubernetes-services-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-services-kafka-connector-source]]
+= camel-kubernetes-services-kafka-connector source configuration
+
+When using camel-kubernetes-services-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-services-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-services source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-kudu-kafka-connector/pom.xml b/connectors/camel-kudu-kafka-connector/pom.xml
index 786973a..061fbbb 100644
--- a/connectors/camel-kudu-kafka-connector/pom.xml
+++ b/connectors/camel-kudu-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-kudu-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: kudu</name>
diff --git a/connectors/camel-kudu-kafka-connector/src/main/assembly/package.xml b/connectors/camel-kudu-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-kudu-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-kudu-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-kudu-kafka-connector/src/main/docs/camel-kudu-kafka-sink-connector.adoc b/connectors/camel-kudu-kafka-connector/src/main/docs/camel-kudu-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bde3d2a
--- /dev/null
+++ b/connectors/camel-kudu-kafka-connector/src/main/docs/camel-kudu-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-kudu-kafka-connector-sink]]
+= camel-kudu-kafka-connector sink configuration
+
+When using camel-kudu-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kudu-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kudu sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Host of the server to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port of the server to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.tableName* | Table to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to perform One of: [INSERT] [CREATE_TABLE] [SCAN] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kudu.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kudu.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-language-kafka-connector/pom.xml b/connectors/camel-language-kafka-connector/pom.xml
index b4896fa..205255e 100644
--- a/connectors/camel-language-kafka-connector/pom.xml
+++ b/connectors/camel-language-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-language-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: language</name>
diff --git a/connectors/camel-language-kafka-connector/src/main/assembly/package.xml b/connectors/camel-language-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-language-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-language-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-language-kafka-connector/src/main/docs/camel-language-kafka-sink-connector.adoc b/connectors/camel-language-kafka-connector/src/main/docs/camel-language-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b670a89
--- /dev/null
+++ b/connectors/camel-language-kafka-connector/src/main/docs/camel-language-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-language-kafka-connector-sink]]
+= camel-language-kafka-connector sink configuration
+
+When using camel-language-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-language-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-language sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.languageName* | Sets the name of the language to use One of: [bean] [constant] [exchangeProperty] [file] [groovy] [header] [javascript] [jsonpath] [mvel] [ognl] [] [ref] [simple] [spel] [sql] [terser] [tokenize] [xpath] [xquery] [xtokenize] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.resourceUri* | Path to the resource, or a reference to lookup a bean in the Registry to use as the resource | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Whether the script is binary content or text content. By default the script is read as text content (eg java.lang.String) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheScript* | Whether to cache the compiled script and reuse Notice reusing the script can cause side effects from processing one Camel org.apache.camel.Exchange to the next org.apache.camel.Exchange. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.script* | Sets the script to execute | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transform* | Whether or not the result of the script should be used as message body. This options is default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.language.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.language.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ldap-kafka-connector/pom.xml b/connectors/camel-ldap-kafka-connector/pom.xml
index 01945be..1d6f0dc 100644
--- a/connectors/camel-ldap-kafka-connector/pom.xml
+++ b/connectors/camel-ldap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ldap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ldap</name>
diff --git a/connectors/camel-ldap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ldap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ldap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ldap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ldap-kafka-connector/src/main/docs/camel-ldap-kafka-sink-connector.adoc b/connectors/camel-ldap-kafka-connector/src/main/docs/camel-ldap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..01b78cc
--- /dev/null
+++ b/connectors/camel-ldap-kafka-connector/src/main/docs/camel-ldap-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-ldap-kafka-connector-sink]]
+= camel-ldap-kafka-connector sink configuration
+
+When using camel-ldap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ldap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ldap sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.dirContextName* | Name of either a javax.naming.directory.DirContext, or java.util.Hashtable, or Map bean to lookup in the registry. If the bean is either a Hashtable or Map then a new javax.naming.directory.DirContext instance is created for each use. If the bean is a javax.naming.directory.DirContext then the bean is used as given. The latter may not be possible in all situations where the javax.naming.directory.DirContext must not be shared, and in those situations it can be better to use java.util.Hashtable or Map instead. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.base* | The base DN for searches. | "ou=system" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageSize* | When specified the ldap module uses paging to retrieve all results (most LDAP Servers throw an exception when trying to retrieve more than 1000 entries in one query). To be able to use this a LdapContext (subclass of DirContext) has to be passed in as ldapServerBean (otherwise an exception is thrown) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.returnedAttributes* | Comma-separated list of attributes that should be set in each entry of the result | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scope* | Specifies how deeply to search the tree of entries, starting at the base DN. One of: [object] [onelevel] [subtree] | "subtree" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ldif-kafka-connector/pom.xml b/connectors/camel-ldif-kafka-connector/pom.xml
index 20eb38e..b36d843 100644
--- a/connectors/camel-ldif-kafka-connector/pom.xml
+++ b/connectors/camel-ldif-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ldif-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ldif</name>
diff --git a/connectors/camel-ldif-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ldif-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ldif-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ldif-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ldif-kafka-connector/src/main/docs/camel-ldif-kafka-sink-connector.adoc b/connectors/camel-ldif-kafka-connector/src/main/docs/camel-ldif-kafka-sink-connector.adoc
new file mode 100644
index 0000000..51b5c9a
--- /dev/null
+++ b/connectors/camel-ldif-kafka-connector/src/main/docs/camel-ldif-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-ldif-kafka-connector-sink]]
+= camel-ldif-kafka-connector sink configuration
+
+When using camel-ldif-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ldif-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ldif sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.ldapConnectionName* | The name of the LdapConnection bean to pull from the registry. Note that this must be of scope prototype to avoid it being shared among threads or using a connection that has timed out. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldif.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldif.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-log-kafka-connector/pom.xml b/connectors/camel-log-kafka-connector/pom.xml
index a3eea0a..19a3c0e 100644
--- a/connectors/camel-log-kafka-connector/pom.xml
+++ b/connectors/camel-log-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-log-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: log</name>
diff --git a/connectors/camel-log-kafka-connector/src/main/assembly/package.xml b/connectors/camel-log-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-log-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-log-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-log-kafka-connector/src/main/docs/camel-log-kafka-sink-connector.adoc b/connectors/camel-log-kafka-connector/src/main/docs/camel-log-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7a62b83
--- /dev/null
+++ b/connectors/camel-log-kafka-connector/src/main/docs/camel-log-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-log-kafka-connector-sink]]
+= camel-log-kafka-connector sink configuration
+
+When using camel-log-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-log-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-log sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.loggerName* | Name of the logging category to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.groupActiveOnly* | If true, will hide stats when no new messages have been received for a time interval, if false, show stats regardless of message traffic. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupDelay* | Set the initial delay for stats (in millis) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupInterval* | If specified will group message stats by this time interval (in millis) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupSize* | An integer that specifies a group size for throughput logging. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.level* | Logging level to use. The default value is INFO. One of: [ERROR] [WARN] [INFO] [DEBUG] [TRACE] [OFF] | "INFO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logMask* | If true, mask sensitive information like password or passphrase in the log. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marker* | An optional Marker name to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exchangeFormatter* | To use a custom exchange formatter | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxChars* | Limits the number of characters logged per line. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiline* | If enabled then each information is outputted on a newline. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showAll* | Quick option for turning all options on. (multiline, maxChars has to be manually set if to be used) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showBody* | Show the message body. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showBodyType* | Show the body Java type. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showCaughtException* | If the exchange has a caught exception, show the exception message (no stack trace). A caught exception is stored as a property on the exchange (using the key org.apache.camel.Exchange#EXCEPTION_CAUGHT) and for instance a doCatch can catch exceptions. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showException* | If the exchange has an exception, show the exception message (no stacktrace) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showExchangeId* | Show the unique exchange ID. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showExchangePattern* | Shows the Message Exchange Pattern (or MEP for short). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showFiles* | If enabled Camel will output files | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showFuture* | If enabled Camel will on Future objects wait for it to complete to obtain the payload to be logged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showHeaders* | Show the message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showProperties* | Show the exchange properties. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showStackTrace* | Show the stack trace, if an exchange has an exception. Only effective if one of showAll, showException or showCaughtException are enabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showStreams* | Whether Camel should show stream bodies or not (eg such as java.io.InputStream). Beware if you enable this option then you may not be able later to access the message body as the stream have already been read by this logger. To remedy this you will have to use Stream Caching. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipBodyLineSeparator* | Whether to skip line separators when logging the message body. This allows to log the message body in one line, setting this option to false will preserve any line separators from the body, which then will log the body as is. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.style* | Sets the outputs style to use. One of: [Default] [Tab] [Fixed] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.component.log.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.log.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.log.exchangeFormatter* | Sets a custom ExchangeFormatter to convert the Exchange to a String suitable for logging. If not specified, we default to DefaultExchangeFormatter. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-lpr-kafka-connector/pom.xml b/connectors/camel-lpr-kafka-connector/pom.xml
index 28888ba..87da2f4 100644
--- a/connectors/camel-lpr-kafka-connector/pom.xml
+++ b/connectors/camel-lpr-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-lpr-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: lpr</name>
diff --git a/connectors/camel-lpr-kafka-connector/src/main/assembly/package.xml b/connectors/camel-lpr-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-lpr-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-lpr-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-lpr-kafka-connector/src/main/docs/camel-lpr-kafka-sink-connector.adoc b/connectors/camel-lpr-kafka-connector/src/main/docs/camel-lpr-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2fc0a76
--- /dev/null
+++ b/connectors/camel-lpr-kafka-connector/src/main/docs/camel-lpr-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-lpr-kafka-connector-sink]]
+= camel-lpr-kafka-connector sink configuration
+
+When using camel-lpr-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-lpr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-lpr sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostname* | Hostname of the printer | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number of the printer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.printername* | Name of the printer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copies* | Number of copies to print | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.docFlavor* | Sets DocFlavor to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flavor* | Sets DocFlavor to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mediaSize* | Sets the stationary as defined by enumeration names in the javax.print.attribute.standard.MediaSizeName API. The default setting is to use North American Letter sized stationary. The value's case is ignored, e.g. values of iso_a4 and ISO_A4 may be used. | "na-letter" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mediaTray* | Sets MediaTray supported by the javax.print.DocFlavor API, for example upper,middle etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mimeType* | Sets mimeTypes supported by the javax.print.DocFlavor API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.orientation* | Sets the page orientation. One of: [portrait] [landscape] [reverse-portrait] [reverse-landscape] | "portrait" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.printerPrefix* | Sets the prefix name of the printer, it is useful when the printer name does not start with //hostname/printer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToPrinter* | etting this option to false prevents sending of the print data to the printer | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sides* | Sets one sided or two sided printing based on the javax.print.attribute.standard.Sides API One of: [one-sided] [duplex] [tumble] [two-sided-short-edge] [two-sided-long-edge] | "one-sided" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lpr.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lpr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-lucene-kafka-connector/pom.xml b/connectors/camel-lucene-kafka-connector/pom.xml
index 0b48037..0d51fde 100644
--- a/connectors/camel-lucene-kafka-connector/pom.xml
+++ b/connectors/camel-lucene-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-lucene-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: lucene</name>
diff --git a/connectors/camel-lucene-kafka-connector/src/main/assembly/package.xml b/connectors/camel-lucene-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-lucene-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-lucene-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-lucene-kafka-connector/src/main/docs/camel-lucene-kafka-sink-connector.adoc b/connectors/camel-lucene-kafka-connector/src/main/docs/camel-lucene-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cdc2d27
--- /dev/null
+++ b/connectors/camel-lucene-kafka-connector/src/main/docs/camel-lucene-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-lucene-kafka-connector-sink]]
+= camel-lucene-kafka-connector sink configuration
+
+When using camel-lucene-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-lucene-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-lucene sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The URL to the lucene server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.operation* | Operation to do such as insert or query. One of: [insert] [query] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.analyzer* | An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extracting index terms from text. The value for analyzer can be any class that extends the abstract class org.apache.lucene.analysis.Analyzer. Lucene also offers a rich set of analyzers out of the box | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.indexDir* | A file system directory in which index files are created upon analysis of the document by the specified analyzer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxHits* | An integer value that limits the result set of the search operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.srcDir* | An optional directory containing files to be used to be analyzed and added to the index at producer startup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lucene.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lucene.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lucene.config* | To use a shared lucene configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-lumberjack-kafka-connector/pom.xml b/connectors/camel-lumberjack-kafka-connector/pom.xml
index 0c33541..7d4ab0d 100644
--- a/connectors/camel-lumberjack-kafka-connector/pom.xml
+++ b/connectors/camel-lumberjack-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-lumberjack-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: lumberjack</name>
diff --git a/connectors/camel-lumberjack-kafka-connector/src/main/assembly/package.xml b/connectors/camel-lumberjack-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-lumberjack-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-lumberjack-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-lumberjack-kafka-connector/src/main/docs/camel-lumberjack-kafka-source-connector.adoc b/connectors/camel-lumberjack-kafka-connector/src/main/docs/camel-lumberjack-kafka-source-connector.adoc
new file mode 100644
index 0000000..9e78a63
--- /dev/null
+++ b/connectors/camel-lumberjack-kafka-connector/src/main/docs/camel-lumberjack-kafka-source-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-lumberjack-kafka-connector-source]]
+= camel-lumberjack-kafka-connector source configuration
+
+When using camel-lumberjack-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-lumberjack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-lumberjack source connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Network interface on which to listen for Lumberjack | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Network port on which to listen for Lumberjack | 5044 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | SSL configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.sslContextParameters* | Sets the default SSL configuration to use for all the endpoints. You can also configure it directly at the endpoint level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-master-kafka-connector/pom.xml b/connectors/camel-master-kafka-connector/pom.xml
index d584bfa..127e134 100644
--- a/connectors/camel-master-kafka-connector/pom.xml
+++ b/connectors/camel-master-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-master-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: master</name>
diff --git a/connectors/camel-master-kafka-connector/src/main/assembly/package.xml b/connectors/camel-master-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-master-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-master-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-master-kafka-connector/src/main/docs/camel-master-kafka-source-connector.adoc b/connectors/camel-master-kafka-connector/src/main/docs/camel-master-kafka-source-connector.adoc
new file mode 100644
index 0000000..738bd39
--- /dev/null
+++ b/connectors/camel-master-kafka-connector/src/main/docs/camel-master-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-master-kafka-connector-source]]
+= camel-master-kafka-connector source configuration
+
+When using camel-master-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-master-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-master source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.namespace* | The name of the cluster namespace to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.delegateUri* | The endpoint uri to use in master/slave mode | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.master.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.master.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.master.service* | Inject the service to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.master.serviceSelector* | Inject the service selector used to lookup the CamelClusterService to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-metrics-kafka-connector/pom.xml b/connectors/camel-metrics-kafka-connector/pom.xml
index a6a572e..37bac7b 100644
--- a/connectors/camel-metrics-kafka-connector/pom.xml
+++ b/connectors/camel-metrics-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-metrics-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: metrics</name>
diff --git a/connectors/camel-metrics-kafka-connector/src/main/assembly/package.xml b/connectors/camel-metrics-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-metrics-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-metrics-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-metrics-kafka-connector/src/main/docs/camel-metrics-kafka-sink-connector.adoc b/connectors/camel-metrics-kafka-connector/src/main/docs/camel-metrics-kafka-sink-connector.adoc
new file mode 100644
index 0000000..02d05a8
--- /dev/null
+++ b/connectors/camel-metrics-kafka-connector/src/main/docs/camel-metrics-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-metrics-kafka-connector-sink]]
+= camel-metrics-kafka-connector sink configuration
+
+When using camel-metrics-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-metrics-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-metrics sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.metricsType* | Type of metrics One of: [gauge] [counter] [histogram] [meter] [timer] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.metricsName* | Name of metrics | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | Action when using timer type One of: [start] [stop] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decrement* | Decrement value when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.increment* | Increment value when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mark* | Mark when using meter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | Subject value when using gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | Value value when using histogram type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.metrics.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.metrics.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.metrics.metricRegistry* | To use a custom configured MetricRegistry. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-micrometer-kafka-connector/pom.xml b/connectors/camel-micrometer-kafka-connector/pom.xml
index b63c75e..792c760 100644
--- a/connectors/camel-micrometer-kafka-connector/pom.xml
+++ b/connectors/camel-micrometer-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-micrometer-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: micrometer</name>
diff --git a/connectors/camel-micrometer-kafka-connector/src/main/assembly/package.xml b/connectors/camel-micrometer-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-micrometer-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-micrometer-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-micrometer-kafka-connector/src/main/docs/camel-micrometer-kafka-sink-connector.adoc b/connectors/camel-micrometer-kafka-connector/src/main/docs/camel-micrometer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a35bd5f
--- /dev/null
+++ b/connectors/camel-micrometer-kafka-connector/src/main/docs/camel-micrometer-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-micrometer-kafka-connector-sink]]
+= camel-micrometer-kafka-connector sink configuration
+
+When using camel-micrometer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-micrometer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-micrometer sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.metricsType* | Type of metrics One of: [COUNTER] [GAUGE] [LONG_TASK_TIMER] [TIMER] [DISTRIBUTION_SUMMARY] [OTHER] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.metricsName* | Name of metrics | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.tags* | Tags of metrics | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | Action expression when using timer type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decrement* | Decrement value expression when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.increment* | Increment value expression when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | Value expression when using histogram type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.micrometer.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.micrometer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.micrometer.metricsRegistry* | To use a custom configured MetricRegistry. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-microprofile-metrics-kafka-connector/pom.xml b/connectors/camel-microprofile-metrics-kafka-connector/pom.xml
index 44b5e36..5f6f3e2 100644
--- a/connectors/camel-microprofile-metrics-kafka-connector/pom.xml
+++ b/connectors/camel-microprofile-metrics-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-microprofile-metrics-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: microprofile-metrics</name>
diff --git a/connectors/camel-microprofile-metrics-kafka-connector/src/main/assembly/package.xml b/connectors/camel-microprofile-metrics-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-microprofile-metrics-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-microprofile-metrics-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-microprofile-metrics-kafka-connector/src/main/docs/camel-microprofile-metrics-kafka-sink-connector.adoc b/connectors/camel-microprofile-metrics-kafka-connector/src/main/docs/camel-microprofile-metrics-kafka-sink-connector.adoc
new file mode 100644
index 0000000..18f19e8
--- /dev/null
+++ b/connectors/camel-microprofile-metrics-kafka-connector/src/main/docs/camel-microprofile-metrics-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-microprofile-metrics-kafka-connector-sink]]
+= camel-microprofile-metrics-kafka-connector sink configuration
+
+When using camel-microprofile-metrics-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-microprofile-metrics-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-microprofile-metrics sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.metricType* | Metric type One of: [concurrent gauge] [counter] [gauge] [meter] [histogram] [timer] [simple timer] [invalid] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.metricName* | Metric name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | Action to use when using the timer type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.counterIncrement* | Increment value when using the counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.description* | Metric description | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.displayName* | Metric display name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gaugeDecrement* | Decrement metric value when using concurrent gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gaugeIncrement* | Increment metric value when using the concurrent gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gaugeValue* | Decrement metric value when using concurrent gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mark* | Mark value to set when using the meter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricUnit* | Metric unit. See org.eclipse.microprofile.metrics.MetricUnits | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tags* | Comma delimited list of tags associated with the metric in the format tagName=tagValue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | Value to set when using the histogram type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.microprofile-metrics.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.microprofile-metrics.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.microprofile-metrics.metric Registry* | Use a custom MetricRegistry. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-milo-client-kafka-connector/pom.xml b/connectors/camel-milo-client-kafka-connector/pom.xml
index 352139b..a8734b2 100644
--- a/connectors/camel-milo-client-kafka-connector/pom.xml
+++ b/connectors/camel-milo-client-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-milo-client-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: milo-client</name>
diff --git a/connectors/camel-milo-client-kafka-connector/src/main/assembly/package.xml b/connectors/camel-milo-client-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-milo-client-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-milo-client-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-milo-client-kafka-connector/src/main/docs/camel-milo-client-kafka-sink-connector.adoc b/connectors/camel-milo-client-kafka-connector/src/main/docs/camel-milo-client-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bf7ea4c
--- /dev/null
+++ b/connectors/camel-milo-client-kafka-connector/src/main/docs/camel-milo-client-kafka-sink-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-milo-client-kafka-connector-sink]]
+= camel-milo-client-kafka-connector sink configuration
+
+When using camel-milo-client-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-client sink connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointUri* | The OPC UA server endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | A virtual client id to force the creation of a new connection instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAwaitWrites* | Default await setting for writes | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discoveryEndpointSuffix* | A suffix for endpoint URI when discovering | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discoveryEndpointUri* | An alternative discovery URI | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | The method definition (see Method ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.node* | The node definition (see Node ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.samplingInterval* | The sampling interval in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowedSecurityPolicies* | A set of allowed security policy URIs. Default is to accept all and use the highest. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | The application name | "Apache Camel adapter for Eclipse Milo" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationUri* | The application URI | "http://camel.apache.org/EclipseMilo/Client" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelLifetime* | Channel lifetime in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAlias* | The name of the key in the keystore file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPassword* | The key password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStorePassword* | The keystore password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreType* | The key store type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreUrl* | The URL where the key should be loaded from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPendingPublishRequests* | The maximum number of pending publish requests | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxResponseMessageSize* | The maximum number of bytes a response message may have | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.overrideHost* | Override the server reported endpoint host with the host from the endpoint URI. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.productUri* | The product URI | "http://camel.apache.org/EclipseMilo" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Request timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionName* | Session name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionTimeout* | Session timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationName* | Default application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationUri* | Default application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.defaultConfiguration* | All default options for client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.productUri* | Default product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.reconnectTimeout* | Default reconnect timeout | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-milo-client-kafka-connector/src/main/docs/camel-milo-client-kafka-source-connector.adoc b/connectors/camel-milo-client-kafka-connector/src/main/docs/camel-milo-client-kafka-source-connector.adoc
new file mode 100644
index 0000000..6fc3f3a
--- /dev/null
+++ b/connectors/camel-milo-client-kafka-connector/src/main/docs/camel-milo-client-kafka-source-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-milo-client-kafka-connector-source]]
+= camel-milo-client-kafka-connector source configuration
+
+When using camel-milo-client-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-client source connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.endpointUri* | The OPC UA server endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | A virtual client id to force the creation of a new connection instance | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAwaitWrites* | Default await setting for writes | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.discoveryEndpointSuffix* | A suffix for endpoint URI when discovering | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.discoveryEndpointUri* | An alternative discovery URI | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.method* | The method definition (see Method ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.node* | The node definition (see Node ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.samplingInterval* | The sampling interval in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowedSecurityPolicies* | A set of allowed security policy URIs. Default is to accept all and use the highest. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | The application name | "Apache Camel adapter for Eclipse Milo" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationUri* | The application URI | "http://camel.apache.org/EclipseMilo/Client" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelLifetime* | Channel lifetime in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyAlias* | The name of the key in the keystore file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPassword* | The key password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStorePassword* | The keystore password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreType* | The key store type | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreUrl* | The URL where the key should be loaded from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPendingPublishRequests* | The maximum number of pending publish requests | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResponseMessageSize* | The maximum number of bytes a response message may have | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.overrideHost* | Override the server reported endpoint host with the host from the endpoint URI. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.productUri* | The product URI | "http://camel.apache.org/EclipseMilo" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeout* | Request timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionName* | Session name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionTimeout* | Session timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationName* | Default application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationUri* | Default application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.defaultConfiguration* | All default options for client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.productUri* | Default product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.reconnectTimeout* | Default reconnect timeout | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-milo-server-kafka-connector/pom.xml b/connectors/camel-milo-server-kafka-connector/pom.xml
index c83a384..560bcf4 100644
--- a/connectors/camel-milo-server-kafka-connector/pom.xml
+++ b/connectors/camel-milo-server-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-milo-server-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: milo-server</name>
diff --git a/connectors/camel-milo-server-kafka-connector/src/main/assembly/package.xml b/connectors/camel-milo-server-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-milo-server-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-milo-server-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-milo-server-kafka-connector/src/main/docs/camel-milo-server-kafka-sink-connector.adoc b/connectors/camel-milo-server-kafka-connector/src/main/docs/camel-milo-server-kafka-sink-connector.adoc
new file mode 100644
index 0000000..af33c42
--- /dev/null
+++ b/connectors/camel-milo-server-kafka-connector/src/main/docs/camel-milo-server-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-milo-server-kafka-connector-sink]]
+= camel-milo-server-kafka-connector sink configuration
+
+When using camel-milo-server-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-server sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.itemId* | ID of the item | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationName* | The application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationUri* | The application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindAddresses* | Set the addresses of the local addresses the server should bind to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindPort* | The TCP port the server binds to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.buildInfo* | Server build info | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateManager* | Server certificate manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateValidator* | Validator for client certificates | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.defaultCertificate Validator* | Validator for client certificates using default file based approach | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.enableAnonymous Authentication* | Enable anonymous authentication, disabled by default | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.namespaceUri* | The URI of the namespace, defaults to urn:org:apache:camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.path* | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.productUri* | The product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPolicies* | Security policies | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPoliciesById* | Security policies by URI or name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.serverCertificate* | Server certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.userAuthentication Credentials* | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.usernameSecurityPolicy Uri* | Set the UserTokenPolicy used when One of: [None] [Basic128Rsa15] [Basic256] [Basic256Sha256] [Aes128_Sha256_RsaOaep] [Aes256_Sha256_RsaPss] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-milo-server-kafka-connector/src/main/docs/camel-milo-server-kafka-source-connector.adoc b/connectors/camel-milo-server-kafka-connector/src/main/docs/camel-milo-server-kafka-source-connector.adoc
new file mode 100644
index 0000000..db06ece
--- /dev/null
+++ b/connectors/camel-milo-server-kafka-connector/src/main/docs/camel-milo-server-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-milo-server-kafka-connector-source]]
+= camel-milo-server-kafka-connector source configuration
+
+When using camel-milo-server-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-server source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.itemId* | ID of the item | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationName* | The application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationUri* | The application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindAddresses* | Set the addresses of the local addresses the server should bind to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindPort* | The TCP port the server binds to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.buildInfo* | Server build info | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateManager* | Server certificate manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateValidator* | Validator for client certificates | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.defaultCertificate Validator* | Validator for client certificates using default file based approach | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.enableAnonymous Authentication* | Enable anonymous authentication, disabled by default | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.namespaceUri* | The URI of the namespace, defaults to urn:org:apache:camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.path* | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.productUri* | The product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPolicies* | Security policies | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPoliciesById* | Security policies by URI or name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.serverCertificate* | Server certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.userAuthentication Credentials* | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.usernameSecurityPolicy Uri* | Set the UserTokenPolicy used when One of: [None] [Basic128Rsa15] [Basic256] [Basic256Sha256] [Aes128_Sha256_RsaOaep] [Aes256_Sha256_RsaPss] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mina-kafka-connector/pom.xml b/connectors/camel-mina-kafka-connector/pom.xml
index 40d6f87..c8dff74 100644
--- a/connectors/camel-mina-kafka-connector/pom.xml
+++ b/connectors/camel-mina-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mina-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mina</name>
diff --git a/connectors/camel-mina-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mina-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mina-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mina-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mina-kafka-connector/src/main/docs/camel-mina-kafka-sink-connector.adoc b/connectors/camel-mina-kafka-connector/src/main/docs/camel-mina-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e3ff75e
--- /dev/null
+++ b/connectors/camel-mina-kafka-connector/src/main/docs/camel-mina-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-mina-kafka-connector-sink]]
+= camel-mina-kafka-connector sink configuration
+
+When using camel-mina-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mina-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mina sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | Protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.minaLogger* | You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sync* | Setting to set endpoint as one-way or request-response. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | You can configure the timeout that specifies how long to wait for a response from a remote server. The timeout unit is in milliseconds, so 60000 is 60 seconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeTimeout* | Maximum amount of time it should take to send data to the MINA session. Default is 10000 milliseconds. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cachedAddress* | Whether to create the InetAddress once and reuse. Setting this to false allows to pickup DNS changes in the network. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazySessionCreation* | Sessions can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumPoolSize* | Number of worker threads in the worker pool for TCP and UDP | 16 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.orderedThreadPoolExecutor* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowDefaultCodec* | The mina component installs a default codec if both, codec is null and textline is false. Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain. This is useful in scenarios where another filter must be the first in the filter chain, like the SSL filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.codec* | To use a custom minda codec implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoderMaxLineLength* | To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoderMaxLineLength* | To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol. If not provided, Camel will use the JVM default Charset | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filters* | You can set a list of Mina IoFilters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textlineDelimiter* | Only used for TCP and if textline=true. Sets the text line delimiter to use. If none provided, Camel will use DEFAULT. This delimiter is used to mark the end of text. One of: [DEFAULT] [AUTO] [UNIX] [WINDOWS] [MAC] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoStartTls* | Whether to auto start SSL handshake. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure SSL security. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.configuration* | To use the shared mina configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mina-kafka-connector/src/main/docs/camel-mina-kafka-source-connector.adoc b/connectors/camel-mina-kafka-connector/src/main/docs/camel-mina-kafka-source-connector.adoc
new file mode 100644
index 0000000..06af18a
--- /dev/null
+++ b/connectors/camel-mina-kafka-connector/src/main/docs/camel-mina-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-mina-kafka-connector-source]]
+= camel-mina-kafka-connector source configuration
+
+When using camel-mina-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mina-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mina source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | Protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minaLogger* | You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | You can configure the timeout that specifies how long to wait for a response from a remote server. The timeout unit is in milliseconds, so 60000 is 60 seconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeTimeout* | Maximum amount of time it should take to send data to the MINA session. Default is 10000 milliseconds. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientMode* | If the clientMode is true, mina consumer will connect the address as a TCP client. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates MinaConsumer if it should disconnect where there is no reply to send back. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates MinaConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumPoolSize* | Number of worker threads in the worker pool for TCP and UDP | 16 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.orderedThreadPoolExecutor* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowDefaultCodec* | The mina component installs a default codec if both, codec is null and textline is false. Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain. This is useful in scenarios where another filter must be the first in the filter chain, like the SSL filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.codec* | To use a custom minda codec implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoderMaxLineLength* | To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoderMaxLineLength* | To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol. If not provided, Camel will use the JVM default Charset | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filters* | You can set a list of Mina IoFilters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textlineDelimiter* | Only used for TCP and if textline=true. Sets the text line delimiter to use. If none provided, Camel will use DEFAULT. This delimiter is used to mark the end of text. One of: [DEFAULT] [AUTO] [UNIX] [WINDOWS] [MAC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartTls* | Whether to auto start SSL handshake. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure SSL security. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.configuration* | To use the shared mina configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mllp-kafka-connector/pom.xml b/connectors/camel-mllp-kafka-connector/pom.xml
index 4c1942d..db5c672 100644
--- a/connectors/camel-mllp-kafka-connector/pom.xml
+++ b/connectors/camel-mllp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mllp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mllp</name>
diff --git a/connectors/camel-mllp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mllp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mllp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mllp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mllp-kafka-connector/src/main/docs/camel-mllp-kafka-sink-connector.adoc b/connectors/camel-mllp-kafka-connector/src/main/docs/camel-mllp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1dcc764
--- /dev/null
+++ b/connectors/camel-mllp-kafka-connector/src/main/docs/camel-mllp-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-mllp-kafka-connector-sink]]
+= camel-mllp-kafka-connector sink configuration
+
+When using camel-mllp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mllp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mllp sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostname* | Hostname or IP for connection for the TCP connection. The default value is null, which means any local IP address | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the TCP connection | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.autoAck* | Enable/Disable the automatic generation of a MLLP Acknowledgement MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferWrites* | Enable/Disable the buffering of HL7 payloads before writing to the socket. | false | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.hl7Headers* | Enable/Disable the automatic generation of message headers from the HL7 Message MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requireEndOfData* | Enable/Disable strict compliance to the MLLP standard. The MLLP standard specifies START_OF_BLOCKhl7 payloadEND_OF_BLOCKEND_OF_DATA, however, some systems do not send the final END_OF_DATA byte. This setting controls whether or not the final END_OF_DATA byte is required or optional. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stringPayload* | Enable/Disable converting the payload to a String. If enabled, HL7 Payloads received from external systems will be validated converted to a String. If the charsetName property is set, that character set will be used for the conversion. If the charsetName property is not set, the value of MSH-18 will be used to determine th appropriate character set. If MSH-18 is not set, then the default ISO-8859-1 character set will be use. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validatePayload* | Enable/Disable the validation of HL7 Payloads If enabled, HL7 Payloads received from external systems will be validated (see Hl7Util.generateInvalidPayloadExceptionMessage for details on the validation). If and invalid payload is detected, a MllpInvalidMessageException (for consumers) or a MllpInvalidAcknowledgementException will be thrown. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used (this component only supports synchronous operations). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Enable/disable the SO_KEEPALIVE socket option. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferSize* | Sets the SO_SNDBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Enable/disable the TCP_NODELAY socket option. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Timeout (in milliseconds) for establishing for a TCP connection TCP Client only | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTimeout* | The approximate idle time allowed before the Client TCP Connection will be reset. A null value or a value less than or equal to zero will disable the idle timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSize* | Sets the SO_RCVBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readTimeout* | The SO_TIMEOUT value (in milliseconds) used after the start of an MLLP frame has been received | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The SO_TIMEOUT value (in milliseconds) used when waiting for the start of an MLLP frame | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charsetName* | Set the CamelCharsetName property on the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.configuration* | Sets the default configuration to use when creating MLLP endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.defaultCharset* | Set the default character set to use for byte to/from String conversions. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhi* | Set the component to log PHI data. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhiMaxBytes* | Set the maximum number of bytes of PHI that will be logged in a log entry. | "5120" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mllp-kafka-connector/src/main/docs/camel-mllp-kafka-source-connector.adoc b/connectors/camel-mllp-kafka-connector/src/main/docs/camel-mllp-kafka-source-connector.adoc
new file mode 100644
index 0000000..9c87b51
--- /dev/null
+++ b/connectors/camel-mllp-kafka-connector/src/main/docs/camel-mllp-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-mllp-kafka-connector-source]]
+= camel-mllp-kafka-connector source configuration
+
+When using camel-mllp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mllp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mllp source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.hostname* | Hostname or IP for connection for the TCP connection. The default value is null, which means any local IP address | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the TCP connection | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.autoAck* | Enable/Disable the automatic generation of a MLLP Acknowledgement MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferWrites* | Enable/Disable the buffering of HL7 payloads before writing to the socket. | false | ConfigDef.Importance.LOW
+| *camel.source.endpoint.hl7Headers* | Enable/Disable the automatic generation of message headers from the HL7 Message MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requireEndOfData* | Enable/Disable strict compliance to the MLLP standard. The MLLP standard specifies START_OF_BLOCKhl7 payloadEND_OF_BLOCKEND_OF_DATA, however, some systems do not send the final END_OF_DATA byte. This setting controls whether or not the final END_OF_DATA byte is required or optional. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stringPayload* | Enable/Disable converting the payload to a String. If enabled, HL7 Payloads received from external systems will be validated converted to a String. If the charsetName property is set, that character set will be used for the conversion. If the charsetName property is not set, the value of MSH-18 will be used to determine th appropriate character set. If MSH-18 is not set, then the default ISO-8859-1 character set will be use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.validatePayload* | Enable/Disable the validation of HL7 Payloads If enabled, HL7 Payloads received from external systems will be validated (see Hl7Util.generateInvalidPayloadExceptionMessage for details on the validation). If and invalid payload is detected, a MllpInvalidMessageException (for consumers) or a MllpInvalidAcknowledgementException will be thrown. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to receive incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. If disabled, the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions by logging them at WARN or ERROR level and ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | "InOut" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used (this component only supports synchronous operations). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backlog* | The maximum queue length for incoming connection indications (a request to connect) is set to the backlog parameter. If a connection indication arrives when the queue is full, the connection is refused. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lenientBind* | TCP Server Only - Allow the endpoint to start before the TCP ServerSocket is bound. In some environments, it may be desirable to allow the endpoint to start before the TCP ServerSocket is bound. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | The maximum number of concurrent MLLP Consumer connections that will be allowed. If a new connection is received and the maximum is number are already established, the new connection will be reset immediately. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseAddress* | Enable/disable the SO_REUSEADDR socket option. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptTimeout* | Timeout (in milliseconds) while waiting for a TCP connection TCP Server Only | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindRetryInterval* | TCP Server Only - The number of milliseconds to wait between bind attempts | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindTimeout* | TCP Server Only - The number of milliseconds to retry binding to a server port | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendBufferSize* | Sets the SO_SNDBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTimeout* | The approximate idle time allowed before the Client TCP Connection will be reset. A null value or a value less than or equal to zero will disable the idle timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReceiveTimeouts* | The maximum number of timeouts (specified by receiveTimeout) allowed before the TCP Connection will be reset. | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.receiveBufferSize* | Sets the SO_RCVBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeout* | The SO_TIMEOUT value (in milliseconds) used after the start of an MLLP frame has been received | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The SO_TIMEOUT value (in milliseconds) used when waiting for the start of an MLLP frame | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charsetName* | Set the CamelCharsetName property on the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.configuration* | Sets the default configuration to use when creating MLLP endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.defaultCharset* | Set the default character set to use for byte to/from String conversions. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhi* | Set the component to log PHI data. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhiMaxBytes* | Set the maximum number of bytes of PHI that will be logged in a log entry. | "5120" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mock-kafka-connector/pom.xml b/connectors/camel-mock-kafka-connector/pom.xml
index b5b62a9..d505bd2 100644
--- a/connectors/camel-mock-kafka-connector/pom.xml
+++ b/connectors/camel-mock-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mock-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mock</name>
diff --git a/connectors/camel-mock-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mock-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mock-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mock-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mock-kafka-connector/src/main/docs/camel-mock-kafka-sink-connector.adoc b/connectors/camel-mock-kafka-connector/src/main/docs/camel-mock-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8fcf4c9
--- /dev/null
+++ b/connectors/camel-mock-kafka-connector/src/main/docs/camel-mock-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-mock-kafka-connector-sink]]
+= camel-mock-kafka-connector sink configuration
+
+When using camel-mock-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mock-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mock sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of mock endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.assertPeriod* | Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid. This is used for example to assert that exactly a number of messages arrives. For example if expectedMessageCount(int) was set to 5, then the assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 messages arrives, then you would need to wait a little period to ensure no further message arrives. This is what you can use this method for. By default this period is disabled. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expectedCount* | Specifies the expected number of message exchanges that should be received by this endpoint. Beware: If you want to expect that 0 messages, then take extra care, as 0 matches when the tests starts, so you need to set a assert period time to let the test run for a while to make sure there are still no messages arrived; for that use setAssertPeriod(long). An alternative is to use NotifyBuilder, and use the notifier to know when Camel is done routing some messages, before you call the assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times. If you want to assert that exactly n'th message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failFast* | Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportGroup* | A number that is used to turn on throughput logging based on groups of the size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultMinimumWaitTime* | Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultWaitTime* | Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainFirst* | Specifies to only retain the first n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the first 10 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainLast* | Specifies to only retain the last n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the last 20 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForEmptyTest* | Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyOnExchange* | Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. Is by default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mock.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mock.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mongodb-gridfs-kafka-connector/pom.xml b/connectors/camel-mongodb-gridfs-kafka-connector/pom.xml
index 74bff6b..0d86057 100644
--- a/connectors/camel-mongodb-gridfs-kafka-connector/pom.xml
+++ b/connectors/camel-mongodb-gridfs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mongodb-gridfs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mongodb-gridfs</name>
diff --git a/connectors/camel-mongodb-gridfs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mongodb-gridfs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mongodb-gridfs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mongodb-gridfs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mongodb-gridfs-kafka-connector/src/main/docs/camel-mongodb-gridfs-kafka-sink-connector.adoc b/connectors/camel-mongodb-gridfs-kafka-connector/src/main/docs/camel-mongodb-gridfs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1a3546b
--- /dev/null
+++ b/connectors/camel-mongodb-gridfs-kafka-connector/src/main/docs/camel-mongodb-gridfs-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-mongodb-gridfs-kafka-connector-sink]]
+= camel-mongodb-gridfs-kafka-connector sink configuration
+
+When using camel-mongodb-gridfs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-gridfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb-gridfs sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionBean* | Name of com.mongodb.MongoClient to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bucket* | Sets the name of the GridFS bucket within the database. Default is fs. | "fs" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.readPreference* | Sets a MongoDB ReadPreference on the Mongo connection. Read preferences set directly on the connection will be overridden by this setting. The com.mongodb.ReadPreference#valueOf(String) utility method is used to resolve the passed readPreference value. Some examples for the possible values are nearest, primary or secondary etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeConcern* | Set the WriteConcern for write operations on MongoDB using the standard ones. Resolved from the fields of the WriteConcern class by calling the WriteConcern#valueOf(String) method. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] [SAFE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Sets the operation this endpoint will execute against GridRS. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mongodb-gridfs-kafka-connector/src/main/docs/camel-mongodb-gridfs-kafka-source-connector.adoc b/connectors/camel-mongodb-gridfs-kafka-connector/src/main/docs/camel-mongodb-gridfs-kafka-source-connector.adoc
new file mode 100644
index 0000000..8812b5a
--- /dev/null
+++ b/connectors/camel-mongodb-gridfs-kafka-connector/src/main/docs/camel-mongodb-gridfs-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-mongodb-gridfs-kafka-connector-source]]
+= camel-mongodb-gridfs-kafka-connector source configuration
+
+When using camel-mongodb-gridfs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-gridfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb-gridfs source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionBean* | Name of com.mongodb.MongoClient to use. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bucket* | Sets the name of the GridFS bucket within the database. Default is fs. | "fs" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.readPreference* | Sets a MongoDB ReadPreference on the Mongo connection. Read preferences set directly on the connection will be overridden by this setting. The com.mongodb.ReadPreference#valueOf(String) utility method is used to resolve the passed readPreference value. Some examples for the possible values are nearest, primary or secondary etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeConcern* | Set the WriteConcern for write operations on MongoDB using the standard ones. Resolved from the fields of the WriteConcern class by calling the WriteConcern#valueOf(String) method. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] [SAFE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Sets the delay between polls within the Consumer. Default is 500ms | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileAttributeName* | If the QueryType uses a FileAttribute, this sets the name of the attribute that is used. Default is camel-processed. | "camel-processed" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Sets the initialDelay before the consumer will start polling. Default is 1000ms | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentTSCollection* | If the QueryType uses a persistent timestamp, this sets the name of the collection within the DB to store the timestamp. | "camel-timestamps" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentTSObject* | If the QueryType uses a persistent timestamp, this is the ID of the object in the collection to store the timestamp. | "camel-timestamp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | Additional query parameters (in JSON) that are used to configure the query used for finding files in the GridFsConsumer | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queryStrategy* | Sets the QueryStrategy that is used for polling for new files. Default is Timestamp One of: [TimeStamp] [PersistentTimestamp] [FileAttribute] [TimeStampAndFileAttribute] [PersistentTimestampAndFileAttribute] | "TimeStamp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mongodb-kafka-connector/pom.xml b/connectors/camel-mongodb-kafka-connector/pom.xml
index 96f97ea..07d665b 100644
--- a/connectors/camel-mongodb-kafka-connector/pom.xml
+++ b/connectors/camel-mongodb-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mongodb-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mongodb</name>
diff --git a/connectors/camel-mongodb-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mongodb-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mongodb-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mongodb-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mongodb-kafka-connector/src/main/docs/camel-mongodb-kafka-sink-connector.adoc b/connectors/camel-mongodb-kafka-connector/src/main/docs/camel-mongodb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..04225b7
--- /dev/null
+++ b/connectors/camel-mongodb-kafka-connector/src/main/docs/camel-mongodb-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-mongodb-kafka-connector-sink]]
+= camel-mongodb-kafka-connector sink configuration
+
+When using camel-mongodb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionBean* | Sets the connection bean reference used to lookup a client for connecting to a database. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collection* | Sets the name of the MongoDB collection to bind to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collectionIndex* | Sets the collection index (JSON FORMAT : { field1 : order1, field2 : order2}) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCollection* | Create collection during initialisation if it doesn't exist. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mongoConnection* | Sets the connection bean used as a client for connecting to a database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Sets the operation this endpoint will execute against MongoDB. One of: [findById] [findOneByQuery] [findAll] [findDistinct] [insert] [save] [update] [remove] [bulkWrite] [aggregate] [getDbStats] [getColStats] [count] [command] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Convert the output of the producer to the selected type : DocumentList Document or MongoIterable. DocumentList or MongoIterable applies to findAll and aggregate. Document applies to all other operations. One of: [DocumentList] [Document] [MongoIterable] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cursorRegenerationDelay* | MongoDB tailable cursors will block until new data arrives. If no new data is inserted, after some time the cursor will be automatically freed and closed by the MongoDB server. The client is expected to regenerate the cursor if needed. This value specifies the time to wait before attempting to fetch a new cursor, and if the attempt fails, how long before the next attempt is made. Default value is 1000ms. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dynamicity* | Sets whether this endpoint will attempt to dynamically resolve the target database and collection from the incoming Exchange properties. Can be used to override at runtime the database and collection specified on the otherwise static endpoint URI. It is disabled by default to boost performance. Enabling it will take a minimal performance hit. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readPreference* | Configure how MongoDB clients route read operations to the members of a replica set. Possible values are PRIMARY, PRIMARY_PREFERRED, SECONDARY, SECONDARY_PREFERRED or NEAREST One of: [PRIMARY] [PRIMARY_PREFERRED] [SECONDARY] [SECONDARY_PREFERRED] [NEAREST] | "PRIMARY" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeConcern* | Configure the connection bean with the level of acknowledgment requested from MongoDB for write operations to a standalone mongod, replicaset or cluster. Possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED or MAJORITY. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] | "ACKNOWLEDGED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeResultAsHeader* | In write operations, it determines whether instead of returning WriteResult as the body of the OUT message, we transfer the IN message to the OUT and attach the WriteResult as a header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamFilter* | Filter condition for change streams consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistentId* | One tail tracking collection can host many trackers for several tailable consumers. To keep them separate, each tracker should have its own unique persistentId. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistentTailTracking* | Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackCollection* | Collection where tail tracking information will be persisted. If not specified, MongoDbTailTrackingConfig#DEFAULT_COLLECTION will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackDb* | Indicates what database the tail tracking mechanism will persist to. If not specified, the current database will be picked by default. Dynamicity will not be taken into account even if enabled, i.e. the tail tracking database will not vary past endpoint initialisation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackField* | Field where the last tracked value will be placed. If not specified, MongoDbTailTrackingConfig#DEFAULT_FIELD will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackIncreasingField* | Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated. The cursor will be (re)created with a query of type: tailTrackIncreasingField greater than lastValue (possibly recovered from persistent tail tracking). Can be of type Integer, Date, String, etc. NOTE: No support for dot notation at the current time, so the field should be at the top level of the document. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.mongoConnection* | A connection client provided externally | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mongodb-kafka-connector/src/main/docs/camel-mongodb-kafka-source-connector.adoc b/connectors/camel-mongodb-kafka-connector/src/main/docs/camel-mongodb-kafka-source-connector.adoc
new file mode 100644
index 0000000..2e81b2a
--- /dev/null
+++ b/connectors/camel-mongodb-kafka-connector/src/main/docs/camel-mongodb-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-mongodb-kafka-connector-source]]
+= camel-mongodb-kafka-connector source configuration
+
+When using camel-mongodb-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionBean* | Sets the connection bean reference used to lookup a client for connecting to a database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.collection* | Sets the name of the MongoDB collection to bind to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.collectionIndex* | Sets the collection index (JSON FORMAT : { field1 : order1, field2 : order2}) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createCollection* | Create collection during initialisation if it doesn't exist. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongoConnection* | Sets the connection bean used as a client for connecting to a database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.operation* | Sets the operation this endpoint will execute against MongoDB. One of: [findById] [findOneByQuery] [findAll] [findDistinct] [insert] [save] [update] [remove] [bulkWrite] [aggregate] [getDbStats] [getColStats] [count] [command] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputType* | Convert the output of the producer to the selected type : DocumentList Document or MongoIterable. DocumentList or MongoIterable applies to findAll and aggregate. Document applies to all other operations. One of: [DocumentList] [Document] [MongoIterable] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | Consumer type. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cursorRegenerationDelay* | MongoDB tailable cursors will block until new data arrives. If no new data is inserted, after some time the cursor will be automatically freed and closed by the MongoDB server. The client is expected to regenerate the cursor if needed. This value specifies the time to wait before attempting to fetch a new cursor, and if the attempt fails, how long before the next attempt is made. Default value is 1000ms. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dynamicity* | Sets whether this endpoint will attempt to dynamically resolve the target database and collection from the incoming Exchange properties. Can be used to override at runtime the database and collection specified on the otherwise static endpoint URI. It is disabled by default to boost performance. Enabling it will take a minimal performance hit. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readPreference* | Configure how MongoDB clients route read operations to the members of a replica set. Possible values are PRIMARY, PRIMARY_PREFERRED, SECONDARY, SECONDARY_PREFERRED or NEAREST One of: [PRIMARY] [PRIMARY_PREFERRED] [SECONDARY] [SECONDARY_PREFERRED] [NEAREST] | "PRIMARY" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeConcern* | Configure the connection bean with the level of acknowledgment requested from MongoDB for write operations to a standalone mongod, replicaset or cluster. Possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED or MAJORITY. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] | "ACKNOWLEDGED" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeResultAsHeader* | In write operations, it determines whether instead of returning WriteResult as the body of the OUT message, we transfer the IN message to the OUT and attach the WriteResult as a header. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamFilter* | Filter condition for change streams consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentId* | One tail tracking collection can host many trackers for several tailable consumers. To keep them separate, each tracker should have its own unique persistentId. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentTailTracking* | Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackCollection* | Collection where tail tracking information will be persisted. If not specified, MongoDbTailTrackingConfig#DEFAULT_COLLECTION will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackDb* | Indicates what database the tail tracking mechanism will persist to. If not specified, the current database will be picked by default. Dynamicity will not be taken into account even if enabled, i.e. the tail tracking database will not vary past endpoint initialisation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackField* | Field where the last tracked value will be placed. If not specified, MongoDbTailTrackingConfig#DEFAULT_FIELD will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackIncreasingField* | Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated. The cursor will be (re)created with a query of type: tailTrackIncreasingField greater than lastValue (possibly recovered from persistent tail tracking). Can be of type Integer, Date, String, etc. NOTE: No support for dot notation at the current time, so the field should be at the top level of the document. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.mongoConnection* | A connection client provided externally | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-msv-kafka-connector/pom.xml b/connectors/camel-msv-kafka-connector/pom.xml
index d5e92b4..dd11dfd 100644
--- a/connectors/camel-msv-kafka-connector/pom.xml
+++ b/connectors/camel-msv-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-msv-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: msv</name>
diff --git a/connectors/camel-msv-kafka-connector/src/main/assembly/package.xml b/connectors/camel-msv-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-msv-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-msv-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-msv-kafka-connector/src/main/docs/camel-msv-kafka-sink-connector.adoc b/connectors/camel-msv-kafka-connector/src/main/docs/camel-msv-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f9a430c
--- /dev/null
+++ b/connectors/camel-msv-kafka-connector/src/main/docs/camel-msv-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-msv-kafka-connector-sink]]
+= camel-msv-kafka-connector sink configuration
+
+When using camel-msv-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-msv-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-msv sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | URL to a local resource on the classpath, or a reference to lookup a bean in the Registry, or a full URL to a remote resource or resource on the file system which contains the XSD to validate against. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.failOnNullBody* | Whether to fail if no body exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullHeader* | Whether to fail if no header exists when validating against a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To validate against a header instead of the message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolver* | To use a custom LSResourceResolver. Do not use together with resourceResolverFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI. The default resource resolver factory resturns a resource resolver which can read files from the class path and file system. Do not use together with resourceResolver. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaFactory* | To use a custom javax.xml.validation.SchemaFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLanguage* | Configures the W3C XML Schema Namespace URI. | "http://www.w3.org/2001/XMLSchema" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSharedSchema* | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.schemaFactory* | To use the javax.xml.validation.SchemaFactory. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mustache-kafka-connector/pom.xml b/connectors/camel-mustache-kafka-connector/pom.xml
index f59c890..4ef51ff 100644
--- a/connectors/camel-mustache-kafka-connector/pom.xml
+++ b/connectors/camel-mustache-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mustache-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mustache</name>
diff --git a/connectors/camel-mustache-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mustache-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mustache-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mustache-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mustache-kafka-connector/src/main/docs/camel-mustache-kafka-sink-connector.adoc b/connectors/camel-mustache-kafka-connector/src/main/docs/camel-mustache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0520f22
--- /dev/null
+++ b/connectors/camel-mustache-kafka-connector/src/main/docs/camel-mustache-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-mustache-kafka-connector-sink]]
+= camel-mustache-kafka-connector sink configuration
+
+When using camel-mustache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mustache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mustache sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Character encoding of the resource content. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.endDelimiter* | Characters used to mark template code end. | "}}" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.startDelimiter* | Characters used to mark template code beginning. | "{{" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mustache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mustache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mustache.mustacheFactory* | To use a custom MustacheFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mvel-kafka-connector/pom.xml b/connectors/camel-mvel-kafka-connector/pom.xml
index 8d61cab..0f0b7e7 100644
--- a/connectors/camel-mvel-kafka-connector/pom.xml
+++ b/connectors/camel-mvel-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mvel-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mvel</name>
diff --git a/connectors/camel-mvel-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mvel-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mvel-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mvel-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mvel-kafka-connector/src/main/docs/camel-mvel-kafka-sink-connector.adoc b/connectors/camel-mvel-kafka-connector/src/main/docs/camel-mvel-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9a15b92
--- /dev/null
+++ b/connectors/camel-mvel-kafka-connector/src/main/docs/camel-mvel-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-mvel-kafka-connector-sink]]
+= camel-mvel-kafka-connector sink configuration
+
+When using camel-mvel-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mvel-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mvel sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Character encoding of the resource content. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mvel.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mvel.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mybatis-bean-kafka-connector/pom.xml b/connectors/camel-mybatis-bean-kafka-connector/pom.xml
index 74a32ef..1e535c6 100644
--- a/connectors/camel-mybatis-bean-kafka-connector/pom.xml
+++ b/connectors/camel-mybatis-bean-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mybatis-bean-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mybatis-bean</name>
diff --git a/connectors/camel-mybatis-bean-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mybatis-bean-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mybatis-bean-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mybatis-bean-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mybatis-bean-kafka-connector/src/main/docs/camel-mybatis-bean-kafka-sink-connector.adoc b/connectors/camel-mybatis-bean-kafka-connector/src/main/docs/camel-mybatis-bean-kafka-sink-connector.adoc
new file mode 100644
index 0000000..161a019
--- /dev/null
+++ b/connectors/camel-mybatis-bean-kafka-connector/src/main/docs/camel-mybatis-bean-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-mybatis-bean-kafka-connector-sink]]
+= camel-mybatis-bean-kafka-connector sink configuration
+
+When using camel-mybatis-bean-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mybatis-bean-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mybatis-bean sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanName* | Name of the bean with the MyBatis annotations. This can either by a type alias or a FQN class name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | Name of the method on the bean that has the SQL query to be executed. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.executorType* | The executor type to be used while executing statements. simple - executor does nothing special. reuse - executor reuses prepared statements. batch - executor reuses statements and batches updates. One of: [SIMPLE] [REUSE] [BATCH] | "SIMPLE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputHeader* | User the header value for input parameters instead of the message body. By default, inputHeader == null and the input parameters are taken from the message body. If outputHeader is set, the value is used and query parameters will be taken from the header instead of the body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. Setting outputHeader will also omit populating the default CamelMyBatisResult header since it would be the same as outputHeader all the time. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mybatis-kafka-connector/pom.xml b/connectors/camel-mybatis-kafka-connector/pom.xml
index b74f99a..d5a11c4 100644
--- a/connectors/camel-mybatis-kafka-connector/pom.xml
+++ b/connectors/camel-mybatis-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-mybatis-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: mybatis</name>
diff --git a/connectors/camel-mybatis-kafka-connector/src/main/assembly/package.xml b/connectors/camel-mybatis-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-mybatis-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-mybatis-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-mybatis-kafka-connector/src/main/docs/camel-mybatis-kafka-sink-connector.adoc b/connectors/camel-mybatis-kafka-connector/src/main/docs/camel-mybatis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bc051fa
--- /dev/null
+++ b/connectors/camel-mybatis-kafka-connector/src/main/docs/camel-mybatis-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-mybatis-kafka-connector-sink]]
+= camel-mybatis-kafka-connector sink configuration
+
+When using camel-mybatis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mybatis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mybatis sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.statement* | The statement name in the MyBatis XML mapping file which maps to the query, insert, update or delete operation you wish to evaluate. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.executorType* | The executor type to be used while executing statements. simple - executor does nothing special. reuse - executor reuses prepared statements. batch - executor reuses statements and batches updates. One of: [SIMPLE] [REUSE] [BATCH] | "SIMPLE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputHeader* | User the header value for input parameters instead of the message body. By default, inputHeader == null and the input parameters are taken from the message body. If outputHeader is set, the value is used and query parameters will be taken from the header instead of the body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. Setting outputHeader will also omit populating the default CamelMyBatisResult header since it would be the same as outputHeader all the time. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statementType* | Mandatory to specify for the producer to control which kind of operation to invoke. One of: [SelectOne] [SelectList] [Insert] [InsertList] [Update] [UpdateList] [Delete] [DeleteList] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-mybatis-kafka-connector/src/main/docs/camel-mybatis-kafka-source-connector.adoc b/connectors/camel-mybatis-kafka-connector/src/main/docs/camel-mybatis-kafka-source-connector.adoc
new file mode 100644
index 0000000..b7857e7
--- /dev/null
+++ b/connectors/camel-mybatis-kafka-connector/src/main/docs/camel-mybatis-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-mybatis-kafka-connector-source]]
+= camel-mybatis-kafka-connector source configuration
+
+When using camel-mybatis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mybatis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mybatis source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.statement* | The statement name in the MyBatis XML mapping file which maps to the query, insert, update or delete operation you wish to evaluate. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | This option is intended to split results returned by the database pool into the batches and deliver them in multiple exchanges. This integer defines the maximum messages to deliver in single exchange. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disable it. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsume* | Statement to run after data has been processed in the route | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeEmptyResultSet* | Whether allow empty resultset to be routed to the next hop | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Enables or disables transaction. If enabled then if processing an exchange failed then the consumer breaks out processing any further exchanges to cause a rollback eager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIterator* | Process resultset individually or as a list | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processingStrategy* | To use a custom MyBatisProcessingStrategy | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nagios-kafka-connector/pom.xml b/connectors/camel-nagios-kafka-connector/pom.xml
index bbf8dc6..cc5b1ab 100644
--- a/connectors/camel-nagios-kafka-connector/pom.xml
+++ b/connectors/camel-nagios-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-nagios-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: nagios</name>
diff --git a/connectors/camel-nagios-kafka-connector/src/main/assembly/package.xml b/connectors/camel-nagios-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-nagios-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-nagios-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-nagios-kafka-connector/src/main/docs/camel-nagios-kafka-sink-connector.adoc b/connectors/camel-nagios-kafka-connector/src/main/docs/camel-nagios-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7f8753b
--- /dev/null
+++ b/connectors/camel-nagios-kafka-connector/src/main/docs/camel-nagios-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-nagios-kafka-connector-sink]]
+= camel-nagios-kafka-connector sink configuration
+
+When using camel-nagios-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nagios-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nagios sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | This is the address of the Nagios host where checks should be send. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the host. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in millis. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendSync* | Whether or not to use synchronous when sending a passive check. Setting it to false will allow Camel to continue routing the message and the passive check message will be send asynchronously. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sending timeout in millis. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryption* | To specify an encryption method. One of: [NONE] [TRIPLE_DES] [XOR] [RIJNDAEL128] [RIJNDAEL192] [RIJNDAEL256] [BLOWFISH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to be authenticated when sending checks to Nagios. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nagios.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nagios.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nagios.configuration* | To use a shared NagiosConfiguration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nats-kafka-connector/pom.xml b/connectors/camel-nats-kafka-connector/pom.xml
index d6af4f5..bf84780 100644
--- a/connectors/camel-nats-kafka-connector/pom.xml
+++ b/connectors/camel-nats-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-nats-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: nats</name>
diff --git a/connectors/camel-nats-kafka-connector/src/main/assembly/package.xml b/connectors/camel-nats-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-nats-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-nats-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-nats-kafka-connector/src/main/docs/camel-nats-kafka-sink-connector.adoc b/connectors/camel-nats-kafka-connector/src/main/docs/camel-nats-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c2eaa77
--- /dev/null
+++ b/connectors/camel-nats-kafka-connector/src/main/docs/camel-nats-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-nats-kafka-connector-sink]]
+= camel-nats-kafka-connector sink configuration
+
+When using camel-nats-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nats sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | The name of topic we want to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | Timeout for connection attempts. (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushConnection* | Define if we want to flush connection when stopping or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushTimeout* | Set the flush timeout (in milliseconds) | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPingsOut* | maximum number of pings have not received a response allowed by the client | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnectAttempts* | Max reconnection attempts | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noEcho* | Turn off echo. If supported by the gnatsd version you are connecting to this flag will prevent the server from echoing messages back to the connection if it has subscriptions on the subject being published to. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noRandomizeServers* | Whether or not randomizing the order of servers for the connection attempts | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pedantic* | Whether or not running in pedantic mode (this affects performace) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pingInterval* | Ping interval to be aware if connection is still alive (in milliseconds) | 120000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnect* | Whether or not using reconnection feature | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectTimeWait* | Waiting time before attempts reconnection (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestCleanupInterval* | Interval to clean up cancelled/timed out requests. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.verbose* | Whether or not running in verbose mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replySubject* | the subject to which subscribers should send response | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connection* | Reference an already instantiated connection to Nats server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nats-kafka-connector/src/main/docs/camel-nats-kafka-source-connector.adoc b/connectors/camel-nats-kafka-connector/src/main/docs/camel-nats-kafka-source-connector.adoc
new file mode 100644
index 0000000..4248da6
--- /dev/null
+++ b/connectors/camel-nats-kafka-connector/src/main/docs/camel-nats-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-nats-kafka-connector-source]]
+= camel-nats-kafka-connector source configuration
+
+When using camel-nats-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nats source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | The name of topic we want to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectionTimeout* | Timeout for connection attempts. (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flushConnection* | Define if we want to flush connection when stopping or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flushTimeout* | Set the flush timeout (in milliseconds) | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPingsOut* | maximum number of pings have not received a response allowed by the client | 2 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnectAttempts* | Max reconnection attempts | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noEcho* | Turn off echo. If supported by the gnatsd version you are connecting to this flag will prevent the server from echoing messages back to the connection if it has subscriptions on the subject being published to. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noRandomizeServers* | Whether or not randomizing the order of servers for the connection attempts | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pedantic* | Whether or not running in pedantic mode (this affects performace) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pingInterval* | Ping interval to be aware if connection is still alive (in milliseconds) | 120000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnect* | Whether or not using reconnection feature | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectTimeWait* | Waiting time before attempts reconnection (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestCleanupInterval* | Interval to clean up cancelled/timed out requests. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.verbose* | Whether or not running in verbose mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessages* | Stop receiving messages from a topic we are subscribing to after maxMessages | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | Consumer thread pool size (default is 10) | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueName* | The Queue name if we are using nats for a queue configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDisabled* | Can be used to turn off sending back reply message in the consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connection* | Reference an already instantiated connection to Nats server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-netty-http-kafka-connector/pom.xml b/connectors/camel-netty-http-kafka-connector/pom.xml
index 2ff5e4e..6e4c01b 100644
--- a/connectors/camel-netty-http-kafka-connector/pom.xml
+++ b/connectors/camel-netty-http-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-netty-http-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: netty-http</name>
diff --git a/connectors/camel-netty-http-kafka-connector/src/main/assembly/package.xml b/connectors/camel-netty-http-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-netty-http-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-netty-http-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-netty-http-kafka-connector/src/main/docs/camel-netty-http-kafka-sink-connector.adoc b/connectors/camel-netty-http-kafka-connector/src/main/docs/camel-netty-http-kafka-sink-connector.adoc
new file mode 100644
index 0000000..414e709
--- /dev/null
+++ b/connectors/camel-netty-http-kafka-connector/src/main/docs/camel-netty-http-kafka-sink-connector.adoc
@@ -0,0 +1,90 @@
+// kafka-connector options: START
+[[camel-netty-http-kafka-connector-sink]]
+= camel-netty-http-kafka-connector sink configuration
+
+When using camel-netty-http-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty-http sink connector supports 64 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use which is either http, https or proxy - a consumer only option. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | The local hostname such as localhost, or 0.0.0.0 when being a consumer. The remote HTTP server hostname when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The host port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.path* | Resource path | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, the producer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the producer send all the fault response back. The consumer working in the bridge mode will skip the gzip compression and WWW URL form encoding (by adding the Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED headers to the consumed exchange). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Time to wait for a socket connection to be available. Value is in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientInitializerFactory* | To use a custom ClientInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyChannelCreation* | Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. The default range is 200-299 | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolEnabled* | Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxActive* | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxIdle* | Sets the cap on the number of idle instances in the pool. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinEvictableIdle* | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinIdle* | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useRelativePath* | Sets whether to use a relative path in HTTP requests. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | To use a custom configured NettyHttpConfiguration for configuring this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Netty HttpRequest#getContent() or HttpResponset#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Netty raw stream. Also Netty will auto-close the Netty stream when the Netty HTTP server/HTTP client is done processing, which means that if the asynchronous routing engine is in use then any asynchronous thread that may continue routing the org.apache.camel.Exchange may not be able to read the Netty stream, because Netty has closed it. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.securityConfiguration* | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-netty-http-kafka-connector/src/main/docs/camel-netty-http-kafka-source-connector.adoc b/connectors/camel-netty-http-kafka-connector/src/main/docs/camel-netty-http-kafka-source-connector.adoc
new file mode 100644
index 0000000..b4633cb
--- /dev/null
+++ b/connectors/camel-netty-http-kafka-connector/src/main/docs/camel-netty-http-kafka-source-connector.adoc
@@ -0,0 +1,106 @@
+// kafka-connector options: START
+[[camel-netty-http-kafka-connector-source]]
+= camel-netty-http-kafka-connector source configuration
+
+When using camel-netty-http-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty-http source connector supports 80 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use which is either http, https or proxy - a consumer only option. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | The local hostname such as localhost, or 0.0.0.0 when being a consumer. The remote HTTP server hostname when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The host port number | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.path* | Resource path | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeEndpoint* | If the option is true, the producer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the producer send all the fault response back. The consumer working in the bridge mode will skip the gzip compression and WWW URL form encoding (by adding the Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED headers to the consumed exchange). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not Camel should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.send503whenSuspended* | Whether to send back HTTP status code 503 when the consumer has been suspended. If the option is false then the Netty Acceptor is unbound when the consumer is suspended, so clients cannot connect anymore. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backlog* | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossCount* | When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossGroup* | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunkedMaxContentLength* | Value in bytes the max content length per chunked frame received on the Netty HTTP server. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compression* | Allow using gzip/deflate for compression on the Netty HTTP server if the client supports it from the HTTP headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | To disable HTTP methods on the Netty HTTP consumer. You can specify multiple separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logWarnOnBadRequest* | Whether Netty HTTP server should log a WARN if decoding the HTTP request failed and a HTTP Status 400 (bad request) is returned. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHeaders* | If this option is enabled, then during binding from Netty to Camel Message then the headers will be mapped as well (eg added as header to the Camel Message as well). You can turn off this option to disable this. The headers can still be accessed from the org.apache.camel.component.netty.http.NettyHttpMessage message with the method getHttpRequest() that returns the Netty HTTP request io.netty.handler.codec.http.HttpRequest instance. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxHeaderSize* | The maximum length of all headers. If the sum of the length of each header exceeds this value, a io.netty.handler.codec.TooLongFrameException will be raised. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettyServerBootstrapFactory* | To use a custom NettyServerBootstrapFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettySharedHttpServer* | To use a shared Netty HTTP server. See Netty HTTP Server Example for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverClosedChannelException CaughtLogLevel* | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverExceptionCaughtLog Level* | If the server (NettyConsumer) catches an exception then its logged using this logging level. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverInitializerFactory* | To use a custom ServerInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Netty HTTP consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.urlDecodeHeaders* | If this option is enabled, then during binding from Netty to Camel Message then the header values will be URL decoded (eg %20 will be a space character. Notice this option is used by the default org.apache.camel.component.netty.http.NettyHttpBinding and therefore if you implement a custom org.apache.camel.component.netty.http.NettyHttpBinding then you would need to decode the headers accordingly to this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingExecutorService* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configuration* | To use a custom configured NettyHttpConfiguration for configuring this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Netty HttpRequest#getContent() or HttpResponset#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Netty raw stream. Also Netty will auto-close the Netty stream when the Netty HTTP server/HTTP client is done processing, which means that if the asynchronous routing engine is in use then any asynchronous thread that may continue routing the org.apache.camel.Exchange may not be able to read the Netty stream, because Netty has closed it. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.needClientAuth* | Configures whether the server needs client authentication when using SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityConfiguration* | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityOptions* | To configure NettyHttpSecurityConfiguration using key/value pairs from the map | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.executorService* | To use the given EventExecutorGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.maximumPoolSize* | Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.securityConfiguration* | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-netty-kafka-connector/pom.xml b/connectors/camel-netty-kafka-connector/pom.xml
index 91e753c..3ed9fce 100644
--- a/connectors/camel-netty-kafka-connector/pom.xml
+++ b/connectors/camel-netty-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-netty-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: netty</name>
diff --git a/connectors/camel-netty-kafka-connector/src/main/assembly/package.xml b/connectors/camel-netty-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-netty-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-netty-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-netty-kafka-connector/src/main/docs/camel-netty-kafka-sink-connector.adoc b/connectors/camel-netty-kafka-connector/src/main/docs/camel-netty-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1737faa
--- /dev/null
+++ b/connectors/camel-netty-kafka-connector/src/main/docs/camel-netty-kafka-sink-connector.adoc
@@ -0,0 +1,86 @@
+// kafka-connector options: START
+[[camel-netty-kafka-connector-sink]]
+= camel-netty-kafka-connector sink configuration
+
+When using camel-netty-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty sink connector supports 60 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use which can be tcp or udp. One of: [tcp] [udp] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | The hostname. For the consumer the hostname is localhost or 0.0.0.0. For the producer the hostname is the remote host to connect to | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The host port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Time to wait for a socket connection to be available. Value is in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientInitializerFactory* | To use a custom ClientInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationManager* | To use a custom correlation manager to manage how request and reply messages are mapped when using request/reply with the netty producer. This should only be used if you have a way to map requests together with replies such as if there is correlation ids in both the request and reply messages. This can be used if you want to multiplex concurrent messages on the same channel (aka connection) in netty. When doing this you must have a way to correlate the request and reply messages so you can store the right reply on the inflight Camel Exchange before its continued routed. We recommend extending the TimeoutCorrelationManagerSupport when you build custom correlation managers. This provides support for timeout and other complexities you otherwise would need to implement as well. See also the producerPoolEnabled option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyChannelCreation* | Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolEnabled* | Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxActive* | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxIdle* | Sets the cap on the number of idle instances in the pool. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinEvictableIdle* | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinIdle* | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.udpConnectionlessSending* | This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useByteBuf* | If the useByteBuf is true, netty producer will turn the message body into ByteBuf before sending it out. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.udpByteArrayCodec* | For UDP only. If enabled the using byte array codec instead of Java serialization protocol. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowDefaultCodec* | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoAppendDelimiter* | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoderMaxLineLength* | The max line length to use for the textline codec. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiter* | The delimiter to use for the textline codec. Possible values are LINE and NULL. One of: [LINE] [NULL] | "LINE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-netty-kafka-connector/src/main/docs/camel-netty-kafka-source-connector.adoc b/connectors/camel-netty-kafka-connector/src/main/docs/camel-netty-kafka-source-connector.adoc
new file mode 100644
index 0000000..d12227f
--- /dev/null
+++ b/connectors/camel-netty-kafka-connector/src/main/docs/camel-netty-kafka-source-connector.adoc
@@ -0,0 +1,94 @@
+// kafka-connector options: START
+[[camel-netty-kafka-connector-source]]
+= camel-netty-kafka-connector source configuration
+
+When using camel-netty-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty source connector supports 68 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use which can be tcp or udp. One of: [tcp] [udp] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | The hostname. For the consumer the hostname is localhost or 0.0.0.0. For the producer the hostname is the remote host to connect to | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The host port number | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.broadcast* | Setting to choose Multicast over UDP | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientMode* | If the clientMode is true, netty consumer will connect the address as a TCP client. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnect* | Used only in clientMode in consumer, the consumer will attempt to reconnect on disconnection if this is enabled | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectInterval* | Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backlog* | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossCount* | When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossGroup* | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettyServerBootstrapFactory* | To use a custom NettyServerBootstrapFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.networkInterface* | When using UDP then this option can be used to specify a network interface by its name, such as eth0 to join a multicast group. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverClosedChannelException CaughtLogLevel* | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverExceptionCaughtLog Level* | If the server (NettyConsumer) catches an exception then its logged using this logging level. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverInitializerFactory* | To use a custom ServerInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingExecutorService* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.udpByteArrayCodec* | For UDP only. If enabled the using byte array codec instead of Java serialization protocol. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowDefaultCodec* | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoAppendDelimiter* | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoderMaxLineLength* | The max line length to use for the textline codec. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delimiter* | The delimiter to use for the textline codec. Possible values are LINE and NULL. One of: [LINE] [NULL] | "LINE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.needClientAuth* | Configures whether the server needs client authentication when using SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.executorService* | To use the given EventExecutorGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.maximumPoolSize* | Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nitrite-kafka-connector/pom.xml b/connectors/camel-nitrite-kafka-connector/pom.xml
index b55f2ae..54b1872 100644
--- a/connectors/camel-nitrite-kafka-connector/pom.xml
+++ b/connectors/camel-nitrite-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-nitrite-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: nitrite</name>
diff --git a/connectors/camel-nitrite-kafka-connector/src/main/assembly/package.xml b/connectors/camel-nitrite-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-nitrite-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-nitrite-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-nitrite-kafka-connector/src/main/docs/camel-nitrite-kafka-sink-connector.adoc b/connectors/camel-nitrite-kafka-connector/src/main/docs/camel-nitrite-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9c4857e
--- /dev/null
+++ b/connectors/camel-nitrite-kafka-connector/src/main/docs/camel-nitrite-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-nitrite-kafka-connector-sink]]
+= camel-nitrite-kafka-connector sink configuration
+
+When using camel-nitrite-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nitrite-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nitrite sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.database* | Path to database file. Will be created if not exists. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collection* | Name of Nitrite collection. Cannot be used in combination with repositoryClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repositoryClass* | Class of Nitrite ObjectRepository. Cannot be used in combination with collection option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repositoryName* | Optional name of ObjectRepository. Can be only used in combination with repositoryClass, otherwise have no effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for Nitrite database. Required, if option username specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for Nitrite database. Database is not secured if option not specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nitrite-kafka-connector/src/main/docs/camel-nitrite-kafka-source-connector.adoc b/connectors/camel-nitrite-kafka-connector/src/main/docs/camel-nitrite-kafka-source-connector.adoc
new file mode 100644
index 0000000..9a2cf78
--- /dev/null
+++ b/connectors/camel-nitrite-kafka-connector/src/main/docs/camel-nitrite-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-nitrite-kafka-connector-source]]
+= camel-nitrite-kafka-connector source configuration
+
+When using camel-nitrite-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nitrite-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nitrite source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.database* | Path to database file. Will be created if not exists. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.collection* | Name of Nitrite collection. Cannot be used in combination with repositoryClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repositoryClass* | Class of Nitrite ObjectRepository. Cannot be used in combination with collection option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repositoryName* | Optional name of ObjectRepository. Can be only used in combination with repositoryClass, otherwise have no effect | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for Nitrite database. Required, if option username specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for Nitrite database. Database is not secured if option not specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nsq-kafka-connector/pom.xml b/connectors/camel-nsq-kafka-connector/pom.xml
index d24ee6e..4dc550f 100644
--- a/connectors/camel-nsq-kafka-connector/pom.xml
+++ b/connectors/camel-nsq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-nsq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: nsq</name>
diff --git a/connectors/camel-nsq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-nsq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-nsq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-nsq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-nsq-kafka-connector/src/main/docs/camel-nsq-kafka-sink-connector.adoc b/connectors/camel-nsq-kafka-connector/src/main/docs/camel-nsq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0254ba5
--- /dev/null
+++ b/connectors/camel-nsq-kafka-connector/src/main/docs/camel-nsq-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-nsq-kafka-connector-sink]]
+= camel-nsq-kafka-connector sink configuration
+
+When using camel-nsq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nsq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nsq sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | The NSQ topic | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userAgent* | A String to identify the kind of client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | The port of the nsqd server | 4150 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-nsq-kafka-connector/src/main/docs/camel-nsq-kafka-source-connector.adoc b/connectors/camel-nsq-kafka-connector/src/main/docs/camel-nsq-kafka-source-connector.adoc
new file mode 100644
index 0000000..99469b7
--- /dev/null
+++ b/connectors/camel-nsq-kafka-connector/src/main/docs/camel-nsq-kafka-source-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-nsq-kafka-connector-source]]
+= camel-nsq-kafka-connector source configuration
+
+When using camel-nsq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nsq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nsq source connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | The NSQ topic | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userAgent* | A String to identify the kind of client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoFinish* | Automatically finish the NSQ Message when it is retrieved from the queue and before the Exchange is processed | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channel* | The NSQ channel | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lookupInterval* | The lookup interval | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lookupServerPort* | The NSQ lookup server port | 4161 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimeout* | The NSQ consumer timeout period for messages retrieved from the queue. A value of -1 is the server default | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | Consumer pool size | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requeueInterval* | The requeue interval in milliseconds. A value of -1 is the server default | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-olingo2-kafka-connector/pom.xml b/connectors/camel-olingo2-kafka-connector/pom.xml
index 9a4abe7..ef3602c 100644
--- a/connectors/camel-olingo2-kafka-connector/pom.xml
+++ b/connectors/camel-olingo2-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-olingo2-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: olingo2</name>
diff --git a/connectors/camel-olingo2-kafka-connector/src/main/assembly/package.xml b/connectors/camel-olingo2-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-olingo2-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-olingo2-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-olingo2-kafka-connector/src/main/docs/camel-olingo2-kafka-sink-connector.adoc b/connectors/camel-olingo2-kafka-connector/src/main/docs/camel-olingo2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..501589c
--- /dev/null
+++ b/connectors/camel-olingo2-kafka-connector/src/main/docs/camel-olingo2-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-olingo2-kafka-connector-sink]]
+= camel-olingo2-kafka-connector sink configuration
+
+When using camel-olingo2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo2 sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-olingo2-kafka-connector/src/main/docs/camel-olingo2-kafka-source-connector.adoc b/connectors/camel-olingo2-kafka-connector/src/main/docs/camel-olingo2-kafka-source-connector.adoc
new file mode 100644
index 0000000..8157bcd
--- /dev/null
+++ b/connectors/camel-olingo2-kafka-connector/src/main/docs/camel-olingo2-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-olingo2-kafka-connector-source]]
+= camel-olingo2-kafka-connector source configuration
+
+When using camel-olingo2-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo2 source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitResult* | For endpoints that return an array or collection, a consumer endpoint will map every element to distinct messages, unless splitResult is set to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-olingo4-kafka-connector/pom.xml b/connectors/camel-olingo4-kafka-connector/pom.xml
index c19bc26..a11072b 100644
--- a/connectors/camel-olingo4-kafka-connector/pom.xml
+++ b/connectors/camel-olingo4-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-olingo4-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: olingo4</name>
diff --git a/connectors/camel-olingo4-kafka-connector/src/main/assembly/package.xml b/connectors/camel-olingo4-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-olingo4-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-olingo4-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-olingo4-kafka-connector/src/main/docs/camel-olingo4-kafka-sink-connector.adoc b/connectors/camel-olingo4-kafka-connector/src/main/docs/camel-olingo4-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d604fe0
--- /dev/null
+++ b/connectors/camel-olingo4-kafka-connector/src/main/docs/camel-olingo4-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-olingo4-kafka-connector-sink]]
+= camel-olingo4-kafka-connector sink configuration
+
+When using camel-olingo4-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo4-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo4 sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-olingo4-kafka-connector/src/main/docs/camel-olingo4-kafka-source-connector.adoc b/connectors/camel-olingo4-kafka-connector/src/main/docs/camel-olingo4-kafka-source-connector.adoc
new file mode 100644
index 0000000..0602c36
--- /dev/null
+++ b/connectors/camel-olingo4-kafka-connector/src/main/docs/camel-olingo4-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-olingo4-kafka-connector-source]]
+= camel-olingo4-kafka-connector source configuration
+
+When using camel-olingo4-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo4-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo4 source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitResult* | For endpoints that return an array or collection, a consumer endpoint will map every element to distinct messages, unless splitResult is set to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openshift-build-configs-kafka-connector/pom.xml b/connectors/camel-openshift-build-configs-kafka-connector/pom.xml
index 12a866b..321e0f9 100644
--- a/connectors/camel-openshift-build-configs-kafka-connector/pom.xml
+++ b/connectors/camel-openshift-build-configs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openshift-build-configs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openshift-build-configs</name>
diff --git a/connectors/camel-openshift-build-configs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openshift-build-configs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openshift-build-configs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openshift-build-configs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openshift-build-configs-kafka-connector/src/main/docs/camel-openshift-build-configs-kafka-sink-connector.adoc b/connectors/camel-openshift-build-configs-kafka-connector/src/main/docs/camel-openshift-build-configs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6b4b24f
--- /dev/null
+++ b/connectors/camel-openshift-build-configs-kafka-connector/src/main/docs/camel-openshift-build-configs-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-openshift-build-configs-kafka-connector-sink]]
+= camel-openshift-build-configs-kafka-connector sink configuration
+
+When using camel-openshift-build-configs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openshift-build-configs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openshift-build-configs sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-build-configs.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-build-configs.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openshift-builds-kafka-connector/pom.xml b/connectors/camel-openshift-builds-kafka-connector/pom.xml
index 713435f..e008c04 100644
--- a/connectors/camel-openshift-builds-kafka-connector/pom.xml
+++ b/connectors/camel-openshift-builds-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openshift-builds-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openshift-builds</name>
diff --git a/connectors/camel-openshift-builds-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openshift-builds-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openshift-builds-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openshift-builds-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openshift-builds-kafka-connector/src/main/docs/camel-openshift-builds-kafka-sink-connector.adoc b/connectors/camel-openshift-builds-kafka-connector/src/main/docs/camel-openshift-builds-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fd4f5d6
--- /dev/null
+++ b/connectors/camel-openshift-builds-kafka-connector/src/main/docs/camel-openshift-builds-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-openshift-builds-kafka-connector-sink]]
+= camel-openshift-builds-kafka-connector sink configuration
+
+When using camel-openshift-builds-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openshift-builds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openshift-builds sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-builds.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-builds.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openstack-cinder-kafka-connector/pom.xml b/connectors/camel-openstack-cinder-kafka-connector/pom.xml
index d108cda..3ac9028 100644
--- a/connectors/camel-openstack-cinder-kafka-connector/pom.xml
+++ b/connectors/camel-openstack-cinder-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openstack-cinder-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openstack-cinder</name>
diff --git a/connectors/camel-openstack-cinder-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openstack-cinder-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openstack-cinder-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openstack-cinder-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openstack-cinder-kafka-connector/src/main/docs/camel-openstack-cinder-kafka-sink-connector.adoc b/connectors/camel-openstack-cinder-kafka-connector/src/main/docs/camel-openstack-cinder-kafka-sink-connector.adoc
new file mode 100644
index 0000000..152c80e
--- /dev/null
+++ b/connectors/camel-openstack-cinder-kafka-connector/src/main/docs/camel-openstack-cinder-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-cinder-kafka-connector-sink]]
+= camel-openstack-cinder-kafka-connector sink configuration
+
+When using camel-openstack-cinder-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-cinder-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-cinder sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Cinder subsystem One of: [snapshots] [volumes] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-cinder.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-cinder.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openstack-glance-kafka-connector/pom.xml b/connectors/camel-openstack-glance-kafka-connector/pom.xml
index 968a10a..69a4977 100644
--- a/connectors/camel-openstack-glance-kafka-connector/pom.xml
+++ b/connectors/camel-openstack-glance-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openstack-glance-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openstack-glance</name>
diff --git a/connectors/camel-openstack-glance-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openstack-glance-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openstack-glance-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openstack-glance-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openstack-glance-kafka-connector/src/main/docs/camel-openstack-glance-kafka-sink-connector.adoc b/connectors/camel-openstack-glance-kafka-connector/src/main/docs/camel-openstack-glance-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4e42e3f
--- /dev/null
+++ b/connectors/camel-openstack-glance-kafka-connector/src/main/docs/camel-openstack-glance-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-openstack-glance-kafka-connector-sink]]
+= camel-openstack-glance-kafka-connector sink configuration
+
+When using camel-openstack-glance-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-glance-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-glance sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-glance.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-glance.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openstack-keystone-kafka-connector/pom.xml b/connectors/camel-openstack-keystone-kafka-connector/pom.xml
index 6cae313..fa09676 100644
--- a/connectors/camel-openstack-keystone-kafka-connector/pom.xml
+++ b/connectors/camel-openstack-keystone-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openstack-keystone-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openstack-keystone</name>
diff --git a/connectors/camel-openstack-keystone-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openstack-keystone-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openstack-keystone-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openstack-keystone-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openstack-keystone-kafka-connector/src/main/docs/camel-openstack-keystone-kafka-sink-connector.adoc b/connectors/camel-openstack-keystone-kafka-connector/src/main/docs/camel-openstack-keystone-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d033106
--- /dev/null
+++ b/connectors/camel-openstack-keystone-kafka-connector/src/main/docs/camel-openstack-keystone-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-openstack-keystone-kafka-connector-sink]]
+= camel-openstack-keystone-kafka-connector sink configuration
+
+When using camel-openstack-keystone-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-keystone-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-keystone sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Keystone subsystem One of: [regions] [domains] [projects] [users] [groups] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-keystone.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-keystone.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openstack-neutron-kafka-connector/pom.xml b/connectors/camel-openstack-neutron-kafka-connector/pom.xml
index 7b24904..0461989 100644
--- a/connectors/camel-openstack-neutron-kafka-connector/pom.xml
+++ b/connectors/camel-openstack-neutron-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openstack-neutron-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openstack-neutron</name>
diff --git a/connectors/camel-openstack-neutron-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openstack-neutron-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openstack-neutron-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openstack-neutron-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openstack-neutron-kafka-connector/src/main/docs/camel-openstack-neutron-kafka-sink-connector.adoc b/connectors/camel-openstack-neutron-kafka-connector/src/main/docs/camel-openstack-neutron-kafka-sink-connector.adoc
new file mode 100644
index 0000000..57a4fb7
--- /dev/null
+++ b/connectors/camel-openstack-neutron-kafka-connector/src/main/docs/camel-openstack-neutron-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-neutron-kafka-connector-sink]]
+= camel-openstack-neutron-kafka-connector sink configuration
+
+When using camel-openstack-neutron-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-neutron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-neutron sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Neutron subsystem One of: [networks] [subnets] [ports] [routers] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-neutron.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-neutron.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openstack-nova-kafka-connector/pom.xml b/connectors/camel-openstack-nova-kafka-connector/pom.xml
index 4e95899..8841048 100644
--- a/connectors/camel-openstack-nova-kafka-connector/pom.xml
+++ b/connectors/camel-openstack-nova-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openstack-nova-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openstack-nova</name>
diff --git a/connectors/camel-openstack-nova-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openstack-nova-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openstack-nova-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openstack-nova-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openstack-nova-kafka-connector/src/main/docs/camel-openstack-nova-kafka-sink-connector.adoc b/connectors/camel-openstack-nova-kafka-connector/src/main/docs/camel-openstack-nova-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2159f12
--- /dev/null
+++ b/connectors/camel-openstack-nova-kafka-connector/src/main/docs/camel-openstack-nova-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-nova-kafka-connector-sink]]
+= camel-openstack-nova-kafka-connector sink configuration
+
+When using camel-openstack-nova-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-nova-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-nova sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Nova subsystem One of: [flavors] [servers] [keypairs] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-nova.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-nova.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-openstack-swift-kafka-connector/pom.xml b/connectors/camel-openstack-swift-kafka-connector/pom.xml
index c150b3e..84e64b0 100644
--- a/connectors/camel-openstack-swift-kafka-connector/pom.xml
+++ b/connectors/camel-openstack-swift-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-openstack-swift-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: openstack-swift</name>
diff --git a/connectors/camel-openstack-swift-kafka-connector/src/main/assembly/package.xml b/connectors/camel-openstack-swift-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-openstack-swift-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-openstack-swift-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-openstack-swift-kafka-connector/src/main/docs/camel-openstack-swift-kafka-sink-connector.adoc b/connectors/camel-openstack-swift-kafka-connector/src/main/docs/camel-openstack-swift-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0b2ae50
--- /dev/null
+++ b/connectors/camel-openstack-swift-kafka-connector/src/main/docs/camel-openstack-swift-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-swift-kafka-connector-sink]]
+= camel-openstack-swift-kafka-connector sink configuration
+
+When using camel-openstack-swift-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-swift-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-swift sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Swift subsystem One of: [objects] [containers] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-swift.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-swift.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-optaplanner-kafka-connector/pom.xml b/connectors/camel-optaplanner-kafka-connector/pom.xml
index 6d12e21..0e55b3c 100644
--- a/connectors/camel-optaplanner-kafka-connector/pom.xml
+++ b/connectors/camel-optaplanner-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-optaplanner-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: optaplanner</name>
diff --git a/connectors/camel-optaplanner-kafka-connector/src/main/assembly/package.xml b/connectors/camel-optaplanner-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-optaplanner-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-optaplanner-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-optaplanner-kafka-connector/src/main/docs/camel-optaplanner-kafka-sink-connector.adoc b/connectors/camel-optaplanner-kafka-connector/src/main/docs/camel-optaplanner-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7e92ab0
--- /dev/null
+++ b/connectors/camel-optaplanner-kafka-connector/src/main/docs/camel-optaplanner-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-optaplanner-kafka-connector-sink]]
+= camel-optaplanner-kafka-connector sink configuration
+
+When using camel-optaplanner-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-optaplanner-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-optaplanner sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.configFile* | Specifies the location to the solver file | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.solverId* | Specifies the solverId to user for the solver instance key | "DEFAULT_SOLVER" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.async* | Specifies to perform operations in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.threadPoolSize* | Specifies the thread pool size to use when async is true | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-optaplanner-kafka-connector/src/main/docs/camel-optaplanner-kafka-source-connector.adoc b/connectors/camel-optaplanner-kafka-connector/src/main/docs/camel-optaplanner-kafka-source-connector.adoc
new file mode 100644
index 0000000..260b80c
--- /dev/null
+++ b/connectors/camel-optaplanner-kafka-connector/src/main/docs/camel-optaplanner-kafka-source-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-optaplanner-kafka-connector-source]]
+= camel-optaplanner-kafka-connector source configuration
+
+When using camel-optaplanner-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-optaplanner-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-optaplanner source connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.configFile* | Specifies the location to the solver file | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.solverId* | Specifies the solverId to user for the solver instance key | "DEFAULT_SOLVER" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-paho-kafka-connector/pom.xml b/connectors/camel-paho-kafka-connector/pom.xml
index 75a21b4..59e88bc 100644
--- a/connectors/camel-paho-kafka-connector/pom.xml
+++ b/connectors/camel-paho-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-paho-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: paho</name>
diff --git a/connectors/camel-paho-kafka-connector/src/main/assembly/package.xml b/connectors/camel-paho-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-paho-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-paho-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-paho-kafka-connector/src/main/docs/camel-paho-kafka-sink-connector.adoc b/connectors/camel-paho-kafka-connector/src/main/docs/camel-paho-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8cfaf3e
--- /dev/null
+++ b/connectors/camel-paho-kafka-connector/src/main/docs/camel-paho-kafka-sink-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-paho-kafka-connector-sink]]
+= camel-paho-kafka-connector sink configuration
+
+When using camel-paho-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-paho-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-paho sink connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | Name of the topic | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.automaticReconnect* | Sets whether the client will automatically attempt to reconnect to the server if the connection is lost. If set to false, the client will not attempt to automatically reconnect to the server in the event that the connection is lost. If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server. It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay will double until it is at 2 minutes at which point the delay will stay at 2 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.brokerUrl* | The URL of the MQTT broker. | "tcp://localhost:1883" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cleanSession* | Sets whether the client and server should remember state across restarts and reconnects. If set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained: Message delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted. The server will treat a subscription as durable. If set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means Message delivery to the specified QOS cannot be maintained if the client, server or connection are restarted The server will treat a subscription as non-durable | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | MQTT client identifier. The identifier must be unique. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Sets the connection timeout value. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. | 30 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filePersistenceDirectory* | Base directory used by file persistence. Will by default use user directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAliveInterval* | Sets the keep alive interval. This value, measured in seconds, defines the maximum time interval between messages sent or received. It enables the client to detect if the server is no longer available, without having to wait for the TCP/IP timeout. The client will ensure that at least one message travels across the network within each keep alive period. In the absence of a data-related message during the time period, the client sends a very small ping message, which the server will acknowledge. A value of 0 disables keepalive processing in the client. The default value is 60 seconds | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInflight* | Sets the max inflight. please increase this value in a high traffic environment. The default value is 10 | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnectDelay* | Get the maximum time (in millis) to wait between reconnects | 128000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mqttVersion* | Sets the MQTT version. The default action is to connect with version 3.1.1, and to fall back to 3.1 if that fails. Version 3.1.1 or 3.1 can be selected specifically, with no fall back, by using the MQTT_VERSION_3_1_1 or MQTT_VERSION_3_1 options respectively. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistence* | Client persistence to be used - memory or file. One of: [FILE] [MEMORY] | "MEMORY" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.qos* | Client quality of service level (0-2). | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retained* | Retain option | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverURIs* | Set a list of one or more serverURIs the client may connect to. Multiple servers can be separated by comma. Each serverURI specifies the address of a server that the client may connect to. Two types of connection are supported tcp:// for a TCP connection and ssl:// for a TCP connection secured by SSL/TLS. For example: tcp://localhost:1883 ssl://localhost:8883 If the port is not specified, it will default to 1883 for tcp:// URIs, and 8883 for ssl:// URIs. If serverURIs is set then it overrides the serverURI parameter passed in on the constructor of the MQTT client. When an attempt to connect is initiated the client will start with the first serverURI in the list and work through the list until a connection is established with a server. If a connection cannot be made to any of the servers then the connect attempt fails. Specifying a list of servers that a client may connect to has several uses: High Availability and reliable message delivery Some MQTT servers support a high availability feature where two or more equal MQTT servers share state. An MQTT client can connect to any of the equal servers and be assured that messages are reliably delivered and durable subscriptions are maintained no matter which server the client connects to. The cleansession flag must be set to false if durable subscriptions and/or reliable message delivery is required. Hunt List A set of servers may be specified that are not equal (as in the high availability option). As no state is shared across the servers reliable message delivery and durable subscriptions are not valid. The cleansession flag must be set to true if the hunt list mode is used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willPayload* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willQos* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willRetained* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willTopic* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.client* | To use an existing mqtt client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.customWebSocketHeaders* | Sets the Custom WebSocket Headers for the WebSocket Connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.executorServiceTimeout* | Set the time in seconds that the executor service should wait when terminating before forcefully terminating. It is not recommended to change this value unless you are absolutely sure that you need to. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpsHostnameVerification Enabled* | Whether SSL HostnameVerifier is enabled or not. The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketFactory* | Sets the SocketFactory to use. This allows an application to apply its own policies around the creation of network sockets. If using an SSL connection, an SSLSocketFactory can be used to supply application-specific security settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslClientProps* | Sets the SSL properties for the connection. Note that these properties are only valid if an implementation of the Java Secure Socket Extensions (JSSE) is available. These properties are not used if a custom SocketFactory has been set. The following properties can be used: com.ibm.ssl.protocol One of: SSL, SSLv3, TLS, TLSv1, SSL_TLS. com.ibm.ssl.contextProvider Underlying JSSE provider. For example IBMJSSE2 or SunJSSE com.ibm.ssl.keyStore The name of the file that contains the KeyStore object that you want the KeyManager to use. For example /mydir/etc/key.p12 com.ibm.ssl.keyStorePassword The password for the KeyStore object that you want the KeyManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.keyStoreType Type of key store, for example PKCS12, JKS, or JCEKS. com.ibm.ssl.keyStoreProvider Key store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.trustStore The name of the file that contains the KeyStore object that you want the TrustManager to use. com.ibm.ssl.trustStorePassword The password for the TrustStore object that you want the TrustManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.trustStoreType The type of KeyStore object that you want the default TrustManager to use. Same possible values as keyStoreType. com.ibm.ssl.trustStoreProvider Trust store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.enabledCipherSuites A list of which ciphers are enabled. Values are dependent on the provider, for example: SSL_RSA_WITH_AES_128_CBC_SHA;SSL_RSA_WITH_3DES_EDE_CBC_SHA. com.ibm.ssl.keyManager Sets the algorithm that will be used to instantiate a KeyManagerFactory object instead of using the default algorithm available in the platform. Example values: IbmX509 or IBMJ9X509. com.ibm.ssl.trustManager Sets the algorithm that will be used to instantiate a TrustManagerFactory object instead of using the default algorithm available in the platform. Example values: PKIX or IBMJ9X509. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslHostnameVerifier* | Sets the HostnameVerifier for the SSL connection. Note that it will be used after handshake on a connection and you should do actions by yourself when hostname is verified error. There is no default HostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Username to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.brokerUrl* | The URL of the MQTT broker. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.configuration* | To use the shared Paho configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.client* | To use a shared Paho client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-paho-kafka-connector/src/main/docs/camel-paho-kafka-source-connector.adoc b/connectors/camel-paho-kafka-connector/src/main/docs/camel-paho-kafka-source-connector.adoc
new file mode 100644
index 0000000..15cad1a
--- /dev/null
+++ b/connectors/camel-paho-kafka-connector/src/main/docs/camel-paho-kafka-source-connector.adoc
@@ -0,0 +1,64 @@
+// kafka-connector options: START
+[[camel-paho-kafka-connector-source]]
+= camel-paho-kafka-connector source configuration
+
+When using camel-paho-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-paho-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-paho source connector supports 38 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | Name of the topic | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.automaticReconnect* | Sets whether the client will automatically attempt to reconnect to the server if the connection is lost. If set to false, the client will not attempt to automatically reconnect to the server in the event that the connection is lost. If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server. It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay will double until it is at 2 minutes at which point the delay will stay at 2 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.brokerUrl* | The URL of the MQTT broker. | "tcp://localhost:1883" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cleanSession* | Sets whether the client and server should remember state across restarts and reconnects. If set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained: Message delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted. The server will treat a subscription as durable. If set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means Message delivery to the specified QOS cannot be maintained if the client, server or connection are restarted The server will treat a subscription as non-durable | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | MQTT client identifier. The identifier must be unique. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Sets the connection timeout value. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. | 30 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filePersistenceDirectory* | Base directory used by file persistence. Will by default use user directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAliveInterval* | Sets the keep alive interval. This value, measured in seconds, defines the maximum time interval between messages sent or received. It enables the client to detect if the server is no longer available, without having to wait for the TCP/IP timeout. The client will ensure that at least one message travels across the network within each keep alive period. In the absence of a data-related message during the time period, the client sends a very small ping message, which the server will acknowledge. A value of 0 disables keepalive processing in the client. The default value is 60 seconds | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInflight* | Sets the max inflight. please increase this value in a high traffic environment. The default value is 10 | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnectDelay* | Get the maximum time (in millis) to wait between reconnects | 128000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mqttVersion* | Sets the MQTT version. The default action is to connect with version 3.1.1, and to fall back to 3.1 if that fails. Version 3.1.1 or 3.1 can be selected specifically, with no fall back, by using the MQTT_VERSION_3_1_1 or MQTT_VERSION_3_1 options respectively. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistence* | Client persistence to be used - memory or file. One of: [FILE] [MEMORY] | "MEMORY" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.qos* | Client quality of service level (0-2). | 2 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retained* | Retain option | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverURIs* | Set a list of one or more serverURIs the client may connect to. Multiple servers can be separated by comma. Each serverURI specifies the address of a server that the client may connect to. Two types of connection are supported tcp:// for a TCP connection and ssl:// for a TCP connection secured by SSL/TLS. For example: tcp://localhost:1883 ssl://localhost:8883 If the port is not specified, it will default to 1883 for tcp:// URIs, and 8883 for ssl:// URIs. If serverURIs is set then it overrides the serverURI parameter passed in on the constructor of the MQTT client. When an attempt to connect is initiated the client will start with the first serverURI in the list and work through the list until a connection is established with a server. If a connection cannot be made to any of the servers then the connect attempt fails. Specifying a list of servers that a client may connect to has several uses: High Availability and reliable message delivery Some MQTT servers support a high availability feature where two or more equal MQTT servers share state. An MQTT client can connect to any of the equal servers and be assured that messages are reliably delivered and durable subscriptions are maintained no matter which server the client connects to. The cleansession flag must be set to false if durable subscriptions and/or reliable message delivery is required. Hunt List A set of servers may be specified that are not equal (as in the high availability option). As no state is shared across the servers reliable message delivery and durable subscriptions are not valid. The cleansession flag must be set to true if the hunt list mode is used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willPayload* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willQos* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willRetained* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willTopic* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.client* | To use an existing mqtt client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.customWebSocketHeaders* | Sets the Custom WebSocket Headers for the WebSocket Connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.executorServiceTimeout* | Set the time in seconds that the executor service should wait when terminating before forcefully terminating. It is not recommended to change this value unless you are absolutely sure that you need to. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpsHostnameVerification Enabled* | Whether SSL HostnameVerifier is enabled or not. The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketFactory* | Sets the SocketFactory to use. This allows an application to apply its own policies around the creation of network sockets. If using an SSL connection, an SSLSocketFactory can be used to supply application-specific security settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslClientProps* | Sets the SSL properties for the connection. Note that these properties are only valid if an implementation of the Java Secure Socket Extensions (JSSE) is available. These properties are not used if a custom SocketFactory has been set. The following properties can be used: com.ibm.ssl.protocol One of: SSL, SSLv3, TLS, TLSv1, SSL_TLS. com.ibm.ssl.contextProvider Underlying JSSE provider. For example IBMJSSE2 or SunJSSE com.ibm.ssl.keyStore The name of the file that contains the KeyStore object that you want the KeyManager to use. For example /mydir/etc/key.p12 com.ibm.ssl.keyStorePassword The password for the KeyStore object that you want the KeyManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.keyStoreType Type of key store, for example PKCS12, JKS, or JCEKS. com.ibm.ssl.keyStoreProvider Key store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.trustStore The name of the file that contains the KeyStore object that you want the TrustManager to use. com.ibm.ssl.trustStorePassword The password for the TrustStore object that you want the TrustManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.trustStoreType The type of KeyStore object that you want the default TrustManager to use. Same possible values as keyStoreType. com.ibm.ssl.trustStoreProvider Trust store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.enabledCipherSuites A list of which ciphers are enabled. Values are dependent on the provider, for example: SSL_RSA_WITH_AES_128_CBC_SHA;SSL_RSA_WITH_3DES_EDE_CBC_SHA. com.ibm.ssl.keyManager Sets the algorithm that will be used to instantiate a KeyManagerFactory object instead of using the default algorithm available in the platform. Example values: IbmX509 or IBMJ9X509. com.ibm.ssl.trustManager Sets the algorithm that will be used to instantiate a TrustManagerFactory object instead of using the default algorithm available in the platform. Example values: PKIX or IBMJ9X509. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslHostnameVerifier* | Sets the HostnameVerifier for the SSL connection. Note that it will be used after handshake on a connection and you should do actions by yourself when hostname is verified error. There is no default HostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Username to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.brokerUrl* | The URL of the MQTT broker. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.configuration* | To use the shared Paho configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.client* | To use a shared Paho client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-paxlogging-kafka-connector/pom.xml b/connectors/camel-paxlogging-kafka-connector/pom.xml
index ed75bb7..dcb8929 100644
--- a/connectors/camel-paxlogging-kafka-connector/pom.xml
+++ b/connectors/camel-paxlogging-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-paxlogging-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: paxlogging</name>
diff --git a/connectors/camel-paxlogging-kafka-connector/src/main/assembly/package.xml b/connectors/camel-paxlogging-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-paxlogging-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-paxlogging-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-paxlogging-kafka-connector/src/main/docs/camel-paxlogging-kafka-source-connector.adoc b/connectors/camel-paxlogging-kafka-connector/src/main/docs/camel-paxlogging-kafka-source-connector.adoc
new file mode 100644
index 0000000..cec2e41
--- /dev/null
+++ b/connectors/camel-paxlogging-kafka-connector/src/main/docs/camel-paxlogging-kafka-source-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-paxlogging-kafka-connector-source]]
+= camel-paxlogging-kafka-connector source configuration
+
+When using camel-paxlogging-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-paxlogging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-paxlogging source connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.appender* | Appender is the name of the pax appender that need to be configured in the PaxLogging service configuration. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paxlogging.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paxlogging.bundleContext* | The OSGi BundleContext is automatic injected by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paxlogging.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pdf-kafka-connector/pom.xml b/connectors/camel-pdf-kafka-connector/pom.xml
index d0be353..0db2a39 100644
--- a/connectors/camel-pdf-kafka-connector/pom.xml
+++ b/connectors/camel-pdf-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pdf-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pdf</name>
diff --git a/connectors/camel-pdf-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pdf-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pdf-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pdf-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pdf-kafka-connector/src/main/docs/camel-pdf-kafka-sink-connector.adoc b/connectors/camel-pdf-kafka-connector/src/main/docs/camel-pdf-kafka-sink-connector.adoc
new file mode 100644
index 0000000..465ca92
--- /dev/null
+++ b/connectors/camel-pdf-kafka-connector/src/main/docs/camel-pdf-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-pdf-kafka-connector-sink]]
+= camel-pdf-kafka-connector sink configuration
+
+When using camel-pdf-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pdf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pdf sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Operation type One of: [create] [append] [extractText] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.font* | Font One of: [Courier] [Courier-Bold] [Courier-Oblique] [Courier-BoldOblique] [Helvetica] [Helvetica-Bold] [Helvetica-Oblique] [Helvetica-BoldOblique] [Times-Roman] [Times-Bold] [Times-Italic] [Times-BoldItalic] [Symbol] [ZapfDingbats] | "Helvetica" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fontSize* | Font size in pixels | 14F | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginBottom* | Margin bottom in pixels | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginLeft* | Margin left in pixels | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginRight* | Margin right in pixels | 40 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginTop* | Margin top in pixels | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageSize* | Page size One of: [LETTER] [LEGAL] [A0] [A1] [A2] [A3] [A4] [A5] [A6] | "A4" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textProcessingFactory* | Text processing to use. autoFormatting: Text is getting sliced by words, then max amount of words that fits in the line will be written into pdf document. With this strategy all words that doesn't fit in the line will be moved to the new line. lineTermination: Builds set of classes for line-termination writing strategy. Text getting sliced by line termination symbol and then it will be written regardless it fits in the line or not. One of: [autoFormatting] [lineTermination] | "lineTermination" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pdf.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pdf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pg-replication-slot-kafka-connector/pom.xml b/connectors/camel-pg-replication-slot-kafka-connector/pom.xml
index 80b6a76..e29c18a 100644
--- a/connectors/camel-pg-replication-slot-kafka-connector/pom.xml
+++ b/connectors/camel-pg-replication-slot-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pg-replication-slot-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pg-replication-slot</name>
diff --git a/connectors/camel-pg-replication-slot-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pg-replication-slot-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pg-replication-slot-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pg-replication-slot-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pg-replication-slot-kafka-connector/src/main/docs/camel-pg-replication-slot-kafka-source-connector.adoc b/connectors/camel-pg-replication-slot-kafka-connector/src/main/docs/camel-pg-replication-slot-kafka-source-connector.adoc
new file mode 100644
index 0000000..87d61c0
--- /dev/null
+++ b/connectors/camel-pg-replication-slot-kafka-connector/src/main/docs/camel-pg-replication-slot-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-pg-replication-slot-kafka-connector-source]]
+= camel-pg-replication-slot-kafka-connector source configuration
+
+When using camel-pg-replication-slot-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pg-replication-slot-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pg-replication-slot source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.slot* | Replication Slot name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | Postgres host | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Postgres port | "5432" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.database* | Postgres database name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.outputPlugin* | Output plugin name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.password* | Postgres password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | Postgres user | "postgres" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateSlot* | Auto create slot if it does not exist | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotOptions* | Slot options to be passed to the output plugin. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statusInterval* | Specifies the number of seconds between status packets sent back to Postgres server. | "10" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.pg-replication-slot.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pg-replication-slot.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pgevent-kafka-connector/pom.xml b/connectors/camel-pgevent-kafka-connector/pom.xml
index 6eb0b88..3d577ad 100644
--- a/connectors/camel-pgevent-kafka-connector/pom.xml
+++ b/connectors/camel-pgevent-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pgevent-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pgevent</name>
diff --git a/connectors/camel-pgevent-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pgevent-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pgevent-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pgevent-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pgevent-kafka-connector/src/main/docs/camel-pgevent-kafka-sink-connector.adoc b/connectors/camel-pgevent-kafka-connector/src/main/docs/camel-pgevent-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ef4c597
--- /dev/null
+++ b/connectors/camel-pgevent-kafka-connector/src/main/docs/camel-pgevent-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-pgevent-kafka-connector-sink]]
+= camel-pgevent-kafka-connector sink configuration
+
+When using camel-pgevent-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pgevent-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pgevent sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | To connect using hostname and port to the database. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | To connect using hostname and port to the database. | "5432" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.database* | The database name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.channel* | The channel name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.datasource* | To connect using the given javax.sql.DataSource instead of using hostname and port. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pass* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | Username for login | "postgres" | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pgevent-kafka-connector/src/main/docs/camel-pgevent-kafka-source-connector.adoc b/connectors/camel-pgevent-kafka-connector/src/main/docs/camel-pgevent-kafka-source-connector.adoc
new file mode 100644
index 0000000..6561e19
--- /dev/null
+++ b/connectors/camel-pgevent-kafka-connector/src/main/docs/camel-pgevent-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-pgevent-kafka-connector-source]]
+= camel-pgevent-kafka-connector source configuration
+
+When using camel-pgevent-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pgevent-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pgevent source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | To connect using hostname and port to the database. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | To connect using hostname and port to the database. | "5432" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.database* | The database name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.channel* | The channel name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.datasource* | To connect using the given javax.sql.DataSource instead of using hostname and port. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pass* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | Username for login | "postgres" | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-platform-http-kafka-connector/pom.xml b/connectors/camel-platform-http-kafka-connector/pom.xml
index cb07eb8..193b392 100644
--- a/connectors/camel-platform-http-kafka-connector/pom.xml
+++ b/connectors/camel-platform-http-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-platform-http-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: platform-http</name>
diff --git a/connectors/camel-platform-http-kafka-connector/src/main/assembly/package.xml b/connectors/camel-platform-http-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-platform-http-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-platform-http-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-platform-http-kafka-connector/src/main/docs/camel-platform-http-kafka-source-connector.adoc b/connectors/camel-platform-http-kafka-connector/src/main/docs/camel-platform-http-kafka-source-connector.adoc
new file mode 100644
index 0000000..9555b6c
--- /dev/null
+++ b/connectors/camel-platform-http-kafka-connector/src/main/docs/camel-platform-http-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-platform-http-kafka-connector-source]]
+= camel-platform-http-kafka-connector source configuration
+
+When using camel-platform-http-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-platform-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-platform-http source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The path under which this endpoint serves the HTTP requests | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumes* | The content type this endpoint accepts as an input, such as application/xml or application/json. null or &#42;/&#42; mean no restriction. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | A comma separated list of HTTP methods to serve, e.g. GET,POST . If no methods are specified, all methods will be served. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.produces* | The content type this endpoint produces, such as application/xml or application/json. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileNameExtWhitelist* | A comma or whitespace separated list of file extensions. Uploads having these extensions will be stored locally. Null value or asterisk () will allow all files. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter headers to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.platformHttpEngine* | An HTTP Server engine implementation to serve the requests of this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.platform-http.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.platform-http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pop3-kafka-connector/pom.xml b/connectors/camel-pop3-kafka-connector/pom.xml
index 82ca802..f65c1e5 100644
--- a/connectors/camel-pop3-kafka-connector/pom.xml
+++ b/connectors/camel-pop3-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pop3-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pop3</name>
diff --git a/connectors/camel-pop3-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pop3-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pop3-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pop3-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pop3-kafka-connector/src/main/docs/camel-pop3-kafka-sink-connector.adoc b/connectors/camel-pop3-kafka-connector/src/main/docs/camel-pop3-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2f4868b
--- /dev/null
+++ b/connectors/camel-pop3-kafka-connector/src/main/docs/camel-pop3-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-pop3-kafka-connector-sink]]
+= camel-pop3-kafka-connector sink configuration
+
+When using camel-pop3-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3 sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pop3-kafka-connector/src/main/docs/camel-pop3-kafka-source-connector.adoc b/connectors/camel-pop3-kafka-connector/src/main/docs/camel-pop3-kafka-source-connector.adoc
new file mode 100644
index 0000000..40c26e4
--- /dev/null
+++ b/connectors/camel-pop3-kafka-connector/src/main/docs/camel-pop3-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-pop3-kafka-connector-source]]
+= camel-pop3-kafka-connector source configuration
+
+When using camel-pop3-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3 source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pop3s-kafka-connector/pom.xml b/connectors/camel-pop3s-kafka-connector/pom.xml
index 8137816..876eda3 100644
--- a/connectors/camel-pop3s-kafka-connector/pom.xml
+++ b/connectors/camel-pop3s-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pop3s-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pop3s</name>
diff --git a/connectors/camel-pop3s-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pop3s-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pop3s-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pop3s-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pop3s-kafka-connector/src/main/docs/camel-pop3s-kafka-sink-connector.adoc b/connectors/camel-pop3s-kafka-connector/src/main/docs/camel-pop3s-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f31f00a
--- /dev/null
+++ b/connectors/camel-pop3s-kafka-connector/src/main/docs/camel-pop3s-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-pop3s-kafka-connector-sink]]
+= camel-pop3s-kafka-connector sink configuration
+
+When using camel-pop3s-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3s-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3s sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pop3s-kafka-connector/src/main/docs/camel-pop3s-kafka-source-connector.adoc b/connectors/camel-pop3s-kafka-connector/src/main/docs/camel-pop3s-kafka-source-connector.adoc
new file mode 100644
index 0000000..8307833
--- /dev/null
+++ b/connectors/camel-pop3s-kafka-connector/src/main/docs/camel-pop3s-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-pop3s-kafka-connector-source]]
+= camel-pop3s-kafka-connector source configuration
+
+When using camel-pop3s-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3s-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3s source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pubnub-kafka-connector/pom.xml b/connectors/camel-pubnub-kafka-connector/pom.xml
index 58b71bf..349f8c8 100644
--- a/connectors/camel-pubnub-kafka-connector/pom.xml
+++ b/connectors/camel-pubnub-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pubnub-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pubnub</name>
diff --git a/connectors/camel-pubnub-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pubnub-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pubnub-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pubnub-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pubnub-kafka-connector/src/main/docs/camel-pubnub-kafka-sink-connector.adoc b/connectors/camel-pubnub-kafka-connector/src/main/docs/camel-pubnub-kafka-sink-connector.adoc
new file mode 100644
index 0000000..23c74ff
--- /dev/null
+++ b/connectors/camel-pubnub-kafka-connector/src/main/docs/camel-pubnub-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-pubnub-kafka-connector-sink]]
+= camel-pubnub-kafka-connector sink configuration
+
+When using camel-pubnub-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pubnub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pubnub sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.channel* | The channel used for subscribing/publishing events | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.uuid* | UUID to be used as a device identifier, a default UUID is generated if not passed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. PUBLISH: Default. Send a message to all subscribers of a channel. FIRE: allows the client to send a message to BLOCKS Event Handlers. These messages will go directly to any Event Handlers registered on the channel. HERENOW: Obtain information about the current state of a channel including a list of unique user-ids currently subscribed to the channel and the total occupancy count. WHERENOW: Obtain information about the current list of channels to which a uuid is subscribed to. GETSTATE: Used to get key/value pairs specific to a subscriber uuid. State information is supplied as a JSON object of key/value pairs SETSTATE: Used to set key/value pairs specific to a subscriber uuid GETHISTORY: Fetches historical messages of a channel. One of: [HERENOW] [WHERENOW] [GETSTATE] [SETSTATE] [GETHISTORY] [PUBLISH] [FIRE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubnub* | Reference to a Pubnub client in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authKey* | If Access Manager is utilized, client will use this authKey in all restricted requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherKey* | If cipher is passed, all communications to/from PubNub will be encrypted. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publishKey* | The publish key obtained from your PubNub account. Required when publishing messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | The secret key used for message signing. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Use SSL for secure transmission. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subscribeKey* | The subscribe key obtained from your PubNub account. Required when subscribing to channels or listening for presence events | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pubnub-kafka-connector/src/main/docs/camel-pubnub-kafka-source-connector.adoc b/connectors/camel-pubnub-kafka-connector/src/main/docs/camel-pubnub-kafka-source-connector.adoc
new file mode 100644
index 0000000..47acfd0
--- /dev/null
+++ b/connectors/camel-pubnub-kafka-connector/src/main/docs/camel-pubnub-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-pubnub-kafka-connector-source]]
+= camel-pubnub-kafka-connector source configuration
+
+When using camel-pubnub-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pubnub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pubnub source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.channel* | The channel used for subscribing/publishing events | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.uuid* | UUID to be used as a device identifier, a default UUID is generated if not passed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.withPresence* | Also subscribe to related presence information | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubnub* | Reference to a Pubnub client in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authKey* | If Access Manager is utilized, client will use this authKey in all restricted requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherKey* | If cipher is passed, all communications to/from PubNub will be encrypted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publishKey* | The publish key obtained from your PubNub account. Required when publishing messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | The secret key used for message signing. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Use SSL for secure transmission. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscribeKey* | The subscribe key obtained from your PubNub account. Required when subscribing to channels or listening for presence events | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pulsar-kafka-connector/pom.xml b/connectors/camel-pulsar-kafka-connector/pom.xml
index b534d55..32c1e2c 100644
--- a/connectors/camel-pulsar-kafka-connector/pom.xml
+++ b/connectors/camel-pulsar-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-pulsar-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: pulsar</name>
diff --git a/connectors/camel-pulsar-kafka-connector/src/main/assembly/package.xml b/connectors/camel-pulsar-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-pulsar-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-pulsar-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-pulsar-kafka-connector/src/main/docs/camel-pulsar-kafka-sink-connector.adoc b/connectors/camel-pulsar-kafka-connector/src/main/docs/camel-pulsar-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d802345
--- /dev/null
+++ b/connectors/camel-pulsar-kafka-connector/src/main/docs/camel-pulsar-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-pulsar-kafka-connector-sink]]
+= camel-pulsar-kafka-connector sink configuration
+
+When using camel-pulsar-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pulsar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pulsar sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.persistence* | Whether the topic is persistent or non-persistent One of: [persistent] [non-persistent] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.tenant* | The tenant | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.namespace* | The namespace | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.topic* | The topic | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batchingEnabled* | Control whether automatic batching of messages is enabled for the producer. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batchingMaxMessages* | The maximum size to batch messages. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batchingMaxPublishDelayMicros* | The maximum time period within which the messages sent will be batched if batchingEnabled is true. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockIfQueueFull* | Whether to block the producing thread if pending messages queue is full or to throw a ProducerQueueIsFullError | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionType* | Compression type to use One of: [NONE] [LZ4] [ZLIB] [ZSTD] [SNAPPY] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialSequenceId* | The first message published will have a sequence Id of initialSequenceId 1. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPendingMessages* | Size of the pending massages queue. When the queue is full, by default, any further sends will fail unless blockIfQueueFull=true | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPendingMessagesAcross Partitions* | The maximum number of pending messages for partitioned topics. The maxPendingMessages value will be reduced if (number of partitions maxPendingMessages) exceeds this value. Partitioned topics have a pending message queue for each partition. | 50000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRouter* | Custom Message Router to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRoutingMode* | Message Routing Mode to use One of: [SinglePartition] [RoundRobinPartition] [CustomPartition] | "RoundRobinPartition" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerName* | Name of the producer. If unset, lets Pulsar select a unique identifier. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeoutMs* | Send timeout in milliseconds | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.autoConfiguration* | The pulsar auto configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.pulsarClient* | The pulsar client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-pulsar-kafka-connector/src/main/docs/camel-pulsar-kafka-source-connector.adoc b/connectors/camel-pulsar-kafka-connector/src/main/docs/camel-pulsar-kafka-source-connector.adoc
new file mode 100644
index 0000000..ad9a8f8
--- /dev/null
+++ b/connectors/camel-pulsar-kafka-connector/src/main/docs/camel-pulsar-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-pulsar-kafka-connector-source]]
+= camel-pulsar-kafka-connector source configuration
+
+When using camel-pulsar-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pulsar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pulsar source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.persistence* | Whether the topic is persistent or non-persistent One of: [persistent] [non-persistent] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.tenant* | The tenant | null | ConfigDef.Importance.HIGH
+| *camel.source.path.namespace* | The namespace | null | ConfigDef.Importance.HIGH
+| *camel.source.path.topic* | The topic | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.ackGroupTimeMillis* | Group the consumer acknowledgments for the specified time in milliseconds - defaults to 100 | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ackTimeoutMillis* | Timeout for unacknowledged messages in milliseconds - defaults to 10000 | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowManualAcknowledgement* | Whether to allow manual message acknowledgements. If this option is enabled, then messages are not immediately acknowledged after being consumed. Instead, an instance of PulsarMessageReceipt is stored as a header on the org.apache.camel.Exchange. Messages can then be acknowledged using PulsarMessageReceipt at any time before the ackTimeout occurs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerName* | Name of the consumer when subscription is EXCLUSIVE | "sole-consumer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerNamePrefix* | Prefix to add to consumer names when a SHARED or FAILOVER subscription is used | "cons" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerQueueSize* | Size of the consumer queue - defaults to 10 | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfConsumers* | Number of consumers - defaults to 1 | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionInitialPosition* | Control the initial position in the topic of a newly created subscription. Default is latest message. One of: [EARLIEST] [LATEST] | "LATEST" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Name of the subscription to use | "subs" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionType* | Type of the subscription EXCLUSIVESHAREDFAILOVER, defaults to EXCLUSIVE One of: [EXCLUSIVE] [SHARED] [FAILOVER] | "EXCLUSIVE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.allowManualAcknowledgement* | Whether to allow manual message acknowledgements. If this option is enabled, then messages are not immediately acknowledged after being consumed. Instead, an instance of PulsarMessageReceipt is stored as a header on the org.apache.camel.Exchange. Messages can then be acknowledged using PulsarMessageReceipt at any time before the ackTimeout occurs. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.pulsarMessageReceiptFactory* | Provide a factory to create an alternate implementation of PulsarMessageReceipt. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.autoConfiguration* | The pulsar auto configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.pulsarClient* | The pulsar client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-quartz-kafka-connector/pom.xml b/connectors/camel-quartz-kafka-connector/pom.xml
index 28b06b5..605bfd9 100644
--- a/connectors/camel-quartz-kafka-connector/pom.xml
+++ b/connectors/camel-quartz-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-quartz-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: quartz</name>
diff --git a/connectors/camel-quartz-kafka-connector/src/main/assembly/package.xml b/connectors/camel-quartz-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-quartz-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-quartz-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-quartz-kafka-connector/src/main/docs/camel-quartz-kafka-source-connector.adoc b/connectors/camel-quartz-kafka-connector/src/main/docs/camel-quartz-kafka-source-connector.adoc
new file mode 100644
index 0000000..894b11b
--- /dev/null
+++ b/connectors/camel-quartz-kafka-connector/src/main/docs/camel-quartz-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-quartz-kafka-connector-source]]
+= camel-quartz-kafka-connector source configuration
+
+When using camel-quartz-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-quartz-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-quartz source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.groupName* | The quartz group name to use. The combination of group name and timer name should be unique. | "Camel" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.triggerName* | The quartz timer name to use. The combination of group name and timer name should be unique. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cron* | Specifies a cron expression to define when to trigger. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteJob* | If set to true, then the trigger automatically delete when route stop. Else if set to false, it will remain in scheduler. When set to false, it will also mean user may reuse pre-configured trigger with camel Uri. Just ensure the names match. Notice you cannot have both deleteJob and pauseJob set to true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableJob* | Whether or not the job should remain stored after it is orphaned (no triggers point to it). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pauseJob* | If set to true, then the trigger automatically pauses when route stop. Else if set to false, it will remain in scheduler. When set to false, it will also mean user may reuse pre-configured trigger with camel Uri. Just ensure the names match. Notice you cannot have both deleteJob and pauseJob set to true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoverableJob* | Instructs the scheduler whether or not the job should be re-executed if a 'recovery' or 'fail-over' situation is encountered. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stateful* | Uses a Quartz PersistJobDataAfterExecution and DisallowConcurrentExecution instead of the default job. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.customCalendar* | Specifies a custom calendar to avoid specific range of date | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobParameters* | To configure additional options on the job. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefixJobNameWithEndpointId* | Whether the job name should be prefixed with endpoint id | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.triggerParameters* | To configure additional options on the trigger. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingFixedCamelContextName* | If it is true, JobDataMap uses the CamelContext name directly to reference the CamelContext, if it is false, JobDataMap uses use the CamelContext management name which could be changed during the deploy time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartScheduler* | Whether or not the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireNow* | If it is true will fire the trigger when the route is start when using SimpleTrigger. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startDelayedSeconds* | Seconds to wait before starting the quartz scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.triggerStartDelay* | In case of scheduler has already started, we want the trigger start slightly after current time to ensure endpoint is fully started before the job kicks in. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.enableJmx* | Whether to enable Quartz JMX which allows to manage the Quartz scheduler from JMX. This options is default true | true | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.prefixInstanceName* | Whether to prefix the Quartz Scheduler instance name with the CamelContext name. This is enabled by default, to let each CamelContext use its own Quartz scheduler instance by default. You can set this option to false to reuse Quartz scheduler instances between multiple CamelContext's. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.prefixJobNameWithEndpointId* | Whether to prefix the quartz job with the endpoint id. This option is default false. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.properties* | Properties to configure the Quartz scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.propertiesFile* | File name of the properties to load from the classpath | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.propertiesRef* | References to an existing Properties or Map to lookup in the registry to use for configuring quartz. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.scheduler* | To use the custom configured Quartz scheduler, instead of creating a new Scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.schedulerFactory* | To use the custom SchedulerFactory which is used to create the Scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.autoStartScheduler* | Whether or not the scheduler should be auto started. This options is default true | true | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.interruptJobsOnShutdown* | Whether to interrupt jobs on shutdown which forces the scheduler to shutdown quicker and attempt to interrupt any running jobs. If this is enabled then any running jobs can fail due to being interrupted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.startDelayedSeconds* | Seconds to wait before starting the quartz scheduler. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-quickfix-kafka-connector/pom.xml b/connectors/camel-quickfix-kafka-connector/pom.xml
index c229e38..a613daa 100644
--- a/connectors/camel-quickfix-kafka-connector/pom.xml
+++ b/connectors/camel-quickfix-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-quickfix-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: quickfix</name>
diff --git a/connectors/camel-quickfix-kafka-connector/src/main/assembly/package.xml b/connectors/camel-quickfix-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-quickfix-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-quickfix-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-quickfix-kafka-connector/src/main/docs/camel-quickfix-kafka-sink-connector.adoc b/connectors/camel-quickfix-kafka-connector/src/main/docs/camel-quickfix-kafka-sink-connector.adoc
new file mode 100644
index 0000000..011d030
--- /dev/null
+++ b/connectors/camel-quickfix-kafka-connector/src/main/docs/camel-quickfix-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-quickfix-kafka-connector-sink]]
+= camel-quickfix-kafka-connector sink configuration
+
+When using camel-quickfix-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-quickfix-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-quickfix sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.configurationName* | The configFile is the name of the QuickFIX/J configuration to use for the FIX engine (located as a resource found in your classpath). | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyCreateEngine* | This option allows to create QuickFIX/J engine on demand. Value true means the engine is started when first message is send or there's consumer configured in route definition. When false value is used, the engine is started at the endpoint creation. When this parameter is missing, the value of component's property lazyCreateEngines is being used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionID* | The optional sessionID identifies a specific FIX session. The format of the sessionID is: (BeginString):(SenderCompID)/(SenderSubID)/(SenderLocationID)-(TargetCompID)/(TargetSubID)/(TargetLocationID) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.configurations* | To use the given map of pre configured QuickFix configurations mapped to the key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.lazyCreateEngines* | If set to true, the engines will be created and started when needed (when first message is send) | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.logFactory* | To use the given LogFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageFactory* | To use the given MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageStoreFactory* | To use the given MessageStoreFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-quickfix-kafka-connector/src/main/docs/camel-quickfix-kafka-source-connector.adoc b/connectors/camel-quickfix-kafka-connector/src/main/docs/camel-quickfix-kafka-source-connector.adoc
new file mode 100644
index 0000000..e043c5b
--- /dev/null
+++ b/connectors/camel-quickfix-kafka-connector/src/main/docs/camel-quickfix-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-quickfix-kafka-connector-source]]
+= camel-quickfix-kafka-connector source configuration
+
+When using camel-quickfix-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-quickfix-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-quickfix source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.configurationName* | The configFile is the name of the QuickFIX/J configuration to use for the FIX engine (located as a resource found in your classpath). | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.lazyCreateEngine* | This option allows to create QuickFIX/J engine on demand. Value true means the engine is started when first message is send or there's consumer configured in route definition. When false value is used, the engine is started at the endpoint creation. When this parameter is missing, the value of component's property lazyCreateEngines is being used. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionID* | The optional sessionID identifies a specific FIX session. The format of the sessionID is: (BeginString):(SenderCompID)/(SenderSubID)/(SenderLocationID)-(TargetCompID)/(TargetSubID)/(TargetLocationID) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.configurations* | To use the given map of pre configured QuickFix configurations mapped to the key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.lazyCreateEngines* | If set to true, the engines will be created and started when needed (when first message is send) | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.logFactory* | To use the given LogFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageFactory* | To use the given MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageStoreFactory* | To use the given MessageStoreFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rabbitmq-kafka-connector/pom.xml b/connectors/camel-rabbitmq-kafka-connector/pom.xml
index 052926b..7e2f38f 100644
--- a/connectors/camel-rabbitmq-kafka-connector/pom.xml
+++ b/connectors/camel-rabbitmq-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-rabbitmq-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: rabbitmq</name>
diff --git a/connectors/camel-rabbitmq-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rabbitmq-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-rabbitmq-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-rabbitmq-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-rabbitmq-kafka-connector/src/main/docs/camel-rabbitmq-kafka-sink-connector.adoc b/connectors/camel-rabbitmq-kafka-connector/src/main/docs/camel-rabbitmq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0c3b06d
--- /dev/null
+++ b/connectors/camel-rabbitmq-kafka-connector/src/main/docs/camel-rabbitmq-kafka-sink-connector.adoc
@@ -0,0 +1,119 @@
+// kafka-connector options: START
+[[camel-rabbitmq-kafka-connector-sink]]
+= camel-rabbitmq-kafka-connector sink configuration
+
+When using camel-rabbitmq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rabbitmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rabbitmq sink connector supports 93 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.exchangeName* | The exchange name determines which exchange produced messages will sent to. In the case of consumers, the exchange name determines which exchange the queue will bind to. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when existing connection has failures) | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exchangeType* | The exchange type such as direct or topic. One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostname* | The hostname of the running rabbitmq instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portNumber* | Port number for the host with the running rabbitmq instance or cluster. Default value is 5672. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | The queue to receive messages from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.routingKey* | The routing key to use when binding a consumer queue to the exchange. For producer routing keys, you set the header rabbitmq.ROUTING_KEY. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullHeaders* | Allow pass null values to header | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the bridgeEndpoint is true, the producer will ignore the message header of rabbitmq.EXCHANGE_NAME and rabbitmq.ROUTING_KEY | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelPoolMaxSize* | Get maximum number of opened channel in pool | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelPoolMaxWait* | Set the maximum number of milliseconds to wait for a channel from the pool | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.guaranteedDeliveries* | When true, an exception will be thrown when the message cannot be delivered (basic.return) and the message is marked as mandatory. PublisherAcknowledgement will also be activated in this case. See also publisher acknowledgements - When will messages be confirmed. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.immediate* | This flag tells the server how to react if the message cannot be routed to a queue consumer immediately. If this flag is set, the server will return an undeliverable message with a Return method. If this flag is zero, the server will queue the message, but with no guarantee that it will ever be consumed. If the header is present rabbitmq.IMMEDIATE it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mandatory* | This flag tells the server how to react if the message cannot be routed to a queue. If this flag is set, the server will return an unroutable message with a Return method. If this flag is zero, the server silently drops the message. If the header is present rabbitmq.MANDATORY it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publisherAcknowledgements* | When true, the message will be published with publisher acknowledgements turned on | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publisherAcknowledgements Timeout* | The amount of time in milliseconds to wait for a basic.ack response from RabbitMQ server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.hostname* | The hostname of the running RabbitMQ instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.portNumber* | Port number for the host with the running rabbitmq instance or cluster. | 5672 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.allowNullHeaders* | Allow pass null values to header | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.channelPoolMaxSize* | Get maximum number of opened channel in pool | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.channelPoolMaxWait* | Set the maximum number of milliseconds to wait for a channel from the pool | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.guaranteedDeliveries* | When true, an exception will be thrown when the message cannot be delivered (basic.return) and the message is marked as mandatory. PublisherAcknowledgement will also be activated in this case. See also publisher acknowledgements - When will messages be confirmed. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.immediate* | This flag tells the server how to react if the message cannot be routed to a queue consumer immediately. If this flag is set, the server will return an undeliverable message with a Return method. If this flag is zero, the server will queue the message, but with no guarantee that it will ever be consumed. If the header is present rabbitmq.IMMEDIATE it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.mandatory* | This flag tells the server how to react if the message cannot be routed to a queue. If this flag is set, the server will return an unroutable message with a Return method. If this flag is zero, the server silently drops the message. If the header is present rabbitmq.MANDATORY it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.publisherAcknowledgements* | When true, the message will be published with publisher acknowledgements turned on | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.publisherAcknowledgements Timeout* | The amount of time in milliseconds to wait for a basic.ack response from RabbitMQ server | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDetectConnection Factory* | Whether to auto-detect looking up RabbitMQ connection factory from the registry. When enabled and a single instance of the connection factory is found then it will be used. An explicit connection factory can be configured on the component or endpoint level which takes precedence. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when connection shutdown is not initiated by the application) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeoutChecker Interval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rabbitmq-kafka-connector/src/main/docs/camel-rabbitmq-kafka-source-connector.adoc b/connectors/camel-rabbitmq-kafka-connector/src/main/docs/camel-rabbitmq-kafka-source-connector.adoc
new file mode 100644
index 0000000..e126ef6
--- /dev/null
+++ b/connectors/camel-rabbitmq-kafka-connector/src/main/docs/camel-rabbitmq-kafka-source-connector.adoc
@@ -0,0 +1,119 @@
+// kafka-connector options: START
+[[camel-rabbitmq-kafka-connector-source]]
+= camel-rabbitmq-kafka-connector source configuration
+
+When using camel-rabbitmq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rabbitmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rabbitmq source connector supports 93 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.exchangeName* | The exchange name determines which exchange produced messages will sent to. In the case of consumers, the exchange name determines which exchange the queue will bind to. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when existing connection has failures) | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangeType* | The exchange type such as direct or topic. One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hostname* | The hostname of the running rabbitmq instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portNumber* | Port number for the host with the running rabbitmq instance or cluster. Default value is 5672. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | The queue to receive messages from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routingKey* | The routing key to use when binding a consumer queue to the exchange. For producer routing keys, you set the header rabbitmq.ROUTING_KEY. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoAck* | If messages should be auto acknowledged | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent consumers when consuming from broker. (eg similar as to the same option for the JMS component). | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveConsumer* | Request exclusive access to the queue (meaning only this consumer can access the queue). This is useful when you want a long-lived shared queue to be temporarily accessible by just one consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchCount* | The maximum number of messages that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchEnabled* | Enables the quality of service on the RabbitMQConsumer side. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchGlobal* | If the settings should be applied to the entire channel rather than each consumer You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchSize* | The maximum amount of content (measured in octets) that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.threadPoolSize* | The consumer uses a Thread Pool Executor with a fixed number of threads. This setting allows you to set that number of threads. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.hostname* | The hostname of the running RabbitMQ instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.portNumber* | Port number for the host with the running rabbitmq instance or cluster. | 5672 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoAck* | If messages should be auto acknowledged | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.exclusiveConsumer* | Request exclusive access to the queue (meaning only this consumer can access the queue). This is useful when you want a long-lived shared queue to be temporarily accessible by just one consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchCount* | The maximum number of messages that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchEnabled* | Enables the quality of service on the RabbitMQConsumer side. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchGlobal* | If the settings should be applied to the entire channel rather than each consumer You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchSize* | The maximum amount of content (measured in octets) that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.threadPoolSize* | The consumer uses a Thread Pool Executor with a fixed number of threads. This setting allows you to set that number of threads. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDetectConnection Factory* | Whether to auto-detect looking up RabbitMQ connection factory from the registry. When enabled and a single instance of the connection factory is found then it will be used. An explicit connection factory can be configured on the component or endpoint level which takes precedence. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when connection shutdown is not initiated by the application) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeoutChecker Interval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-reactive-streams-kafka-connector/pom.xml b/connectors/camel-reactive-streams-kafka-connector/pom.xml
index ffef4c6..d52ee77d 100644
--- a/connectors/camel-reactive-streams-kafka-connector/pom.xml
+++ b/connectors/camel-reactive-streams-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-reactive-streams-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: reactive-streams</name>
diff --git a/connectors/camel-reactive-streams-kafka-connector/src/main/assembly/package.xml b/connectors/camel-reactive-streams-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-reactive-streams-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-reactive-streams-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-reactive-streams-kafka-connector/src/main/docs/camel-reactive-streams-kafka-sink-connector.adoc b/connectors/camel-reactive-streams-kafka-connector/src/main/docs/camel-reactive-streams-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0048cd3
--- /dev/null
+++ b/connectors/camel-reactive-streams-kafka-connector/src/main/docs/camel-reactive-streams-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-reactive-streams-kafka-connector-sink]]
+= camel-reactive-streams-kafka-connector sink configuration
+
+When using camel-reactive-streams-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-reactive-streams-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-reactive-streams sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.stream* | Name of the stream channel used by the endpoint to exchange messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.backpressureStrategy* | The backpressure strategy to use when pushing events to a slow subscriber. One of: [BUFFER] [OLDEST] [LATEST] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.backpressure Strategy* | The backpressure strategy to use when pushing events to a slow subscriber. One of: [BUFFER] [OLDEST] [LATEST] | "BUFFER" | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.internalEngine Configuration* | Configures the internal engine for Reactive Streams. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.serviceType* | Set the type of the underlying reactive streams implementation to use. The implementation is looked up from the registry or using a ServiceLoader, the default implementation is DefaultCamelReactiveStreamsService | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-reactive-streams-kafka-connector/src/main/docs/camel-reactive-streams-kafka-source-connector.adoc b/connectors/camel-reactive-streams-kafka-connector/src/main/docs/camel-reactive-streams-kafka-source-connector.adoc
new file mode 100644
index 0000000..1d2cea1
--- /dev/null
+++ b/connectors/camel-reactive-streams-kafka-connector/src/main/docs/camel-reactive-streams-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-reactive-streams-kafka-connector-source]]
+= camel-reactive-streams-kafka-connector source configuration
+
+When using camel-reactive-streams-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-reactive-streams-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-reactive-streams source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.stream* | Name of the stream channel used by the endpoint to exchange messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of threads used to process exchanges in the Camel route. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangesRefillLowWatermark* | Set the low watermark of requested exchanges to the active subscription as percentage of the maxInflightExchanges. When the number of pending items from the upstream source is lower than the watermark, new items can be requested to the subscription. If set to 0, the subscriber will request items in batches of maxInflightExchanges, only after all items of the previous batch have been processed. If set to 1, the subscriber can request a new item each time an exchange is processed (chatty). Any intermediate value can be used. | 0.25D | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnComplete* | Determines if onComplete events should be pushed to the Camel route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnError* | Determines if onError events should be pushed to the Camel route. Exceptions will be set as message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInflightExchanges* | Maximum number of exchanges concurrently being processed by Camel. This parameter controls backpressure on the stream. Setting a non-positive value will disable backpressure. | "128" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.internalEngine Configuration* | Configures the internal engine for Reactive Streams. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.serviceType* | Set the type of the underlying reactive streams implementation to use. The implementation is looked up from the registry or using a ServiceLoader, the default implementation is DefaultCamelReactiveStreamsService | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ref-kafka-connector/pom.xml b/connectors/camel-ref-kafka-connector/pom.xml
index 97b9344..36cec40 100644
--- a/connectors/camel-ref-kafka-connector/pom.xml
+++ b/connectors/camel-ref-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ref-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ref</name>
diff --git a/connectors/camel-ref-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ref-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ref-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ref-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ref-kafka-connector/src/main/docs/camel-ref-kafka-sink-connector.adoc b/connectors/camel-ref-kafka-connector/src/main/docs/camel-ref-kafka-sink-connector.adoc
new file mode 100644
index 0000000..24ac092
--- /dev/null
+++ b/connectors/camel-ref-kafka-connector/src/main/docs/camel-ref-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-ref-kafka-connector-sink]]
+= camel-ref-kafka-connector sink configuration
+
+When using camel-ref-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ref-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ref sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of endpoint to lookup in the registry. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ref-kafka-connector/src/main/docs/camel-ref-kafka-source-connector.adoc b/connectors/camel-ref-kafka-connector/src/main/docs/camel-ref-kafka-source-connector.adoc
new file mode 100644
index 0000000..db86274
--- /dev/null
+++ b/connectors/camel-ref-kafka-connector/src/main/docs/camel-ref-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-ref-kafka-connector-source]]
+= camel-ref-kafka-connector source configuration
+
+When using camel-ref-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ref-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ref source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of endpoint to lookup in the registry. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rest-api-kafka-connector/pom.xml b/connectors/camel-rest-api-kafka-connector/pom.xml
index b8efede..97b245b 100644
--- a/connectors/camel-rest-api-kafka-connector/pom.xml
+++ b/connectors/camel-rest-api-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-rest-api-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: rest-api</name>
diff --git a/connectors/camel-rest-api-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rest-api-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-rest-api-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-rest-api-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-rest-api-kafka-connector/src/main/docs/camel-rest-api-kafka-source-connector.adoc b/connectors/camel-rest-api-kafka-connector/src/main/docs/camel-rest-api-kafka-source-connector.adoc
new file mode 100644
index 0000000..fc8fa2a
--- /dev/null
+++ b/connectors/camel-rest-api-kafka-connector/src/main/docs/camel-rest-api-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-rest-api-kafka-connector-source]]
+= camel-rest-api-kafka-connector source configuration
+
+When using camel-rest-api-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-api-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest-api source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The base path | null | ConfigDef.Importance.HIGH
+| *camel.source.path.contextIdPattern* | Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apiComponentName* | The Camel Rest API component to use for generating the API of the REST services, such as openapi. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerComponentName* | The Camel Rest component to use for (consumer) the REST transport, such as jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-api.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-api.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rest-kafka-connector/pom.xml b/connectors/camel-rest-kafka-connector/pom.xml
index bd8ceca..b9ff425 100644
--- a/connectors/camel-rest-kafka-connector/pom.xml
+++ b/connectors/camel-rest-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-rest-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: rest</name>
diff --git a/connectors/camel-rest-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rest-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-rest-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-rest-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-rest-kafka-connector/src/main/docs/camel-rest-kafka-sink-connector.adoc b/connectors/camel-rest-kafka-connector/src/main/docs/camel-rest-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a8079fb
--- /dev/null
+++ b/connectors/camel-rest-kafka-connector/src/main/docs/camel-rest-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-rest-kafka-connector-sink]]
+= camel-rest-kafka-connector sink configuration
+
+When using camel-rest-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.method* | HTTP method to use. One of: [get] [post] [put] [delete] [patch] [head] [trace] [connect] [options] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.path* | The base path | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.uriTemplate* | The uri template | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumes* | Media type such as: 'text/xml', or 'application/json' this REST service accepts. By default we accept all kinds of types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inType* | To declare the incoming POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outType* | To declare the outgoing POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.produces* | Media type such as: 'text/xml', or 'application/json' this REST service returns. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.routeId* | Name of the route this REST services creates | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiDoc* | The openapi api doc resource to use. The resource is loaded from classpath by default and must be in JSon format. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bindingMode* | Configures the binding mode for the producer. If set to anything other than 'off' the producer will try to convert the body of the incoming message from inType to the json or xml, and the response from json or xml to outType. One of: [auto] [off] [json] [xml] [json_xml] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Host and port of HTTP service to use (override host in openapi schema) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerComponentName* | The Camel Rest component to use for (producer) the REST transport, such as http, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryParameters* | Query parameters for the HTTP service to call | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.apiDoc* | The swagger api doc resource to use. The resource is loaded from classpath by default and must be in JSon format. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.componentName* | The Camel Rest component to use for (producer) the REST transport, such as http, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.LOW
+| *camel.component.rest.host* | Host and port of HTTP service to use (override host in swagger schema) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.producerComponentName* | The Camel Rest component to use for (producer) the REST transport, such as http, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rest-kafka-connector/src/main/docs/camel-rest-kafka-source-connector.adoc b/connectors/camel-rest-kafka-connector/src/main/docs/camel-rest-kafka-source-connector.adoc
new file mode 100644
index 0000000..525d790
--- /dev/null
+++ b/connectors/camel-rest-kafka-connector/src/main/docs/camel-rest-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-rest-kafka-connector-source]]
+= camel-rest-kafka-connector source configuration
+
+When using camel-rest-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.method* | HTTP method to use. One of: [get] [post] [put] [delete] [patch] [head] [trace] [connect] [options] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.path* | The base path | null | ConfigDef.Importance.HIGH
+| *camel.source.path.uriTemplate* | The uri template | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumes* | Media type such as: 'text/xml', or 'application/json' this REST service accepts. By default we accept all kinds of types. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inType* | To declare the incoming POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outType* | To declare the outgoing POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.produces* | Media type such as: 'text/xml', or 'application/json' this REST service returns. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeId* | Name of the route this REST services creates | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerComponentName* | The Camel Rest component to use for (consumer) the REST transport, such as jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.description* | Human description to document this REST service | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.consumerComponentName* | The Camel Rest component to use for (consumer) the REST transport, such as jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rest-openapi-kafka-connector/pom.xml b/connectors/camel-rest-openapi-kafka-connector/pom.xml
index 744bebb..616715f 100644
--- a/connectors/camel-rest-openapi-kafka-connector/pom.xml
+++ b/connectors/camel-rest-openapi-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-rest-openapi-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: rest-openapi</name>
diff --git a/connectors/camel-rest-openapi-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rest-openapi-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-rest-openapi-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-rest-openapi-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-rest-openapi-kafka-connector/src/main/docs/camel-rest-openapi-kafka-sink-connector.adoc b/connectors/camel-rest-openapi-kafka-connector/src/main/docs/camel-rest-openapi-kafka-sink-connector.adoc
new file mode 100644
index 0000000..968d4bd
--- /dev/null
+++ b/connectors/camel-rest-openapi-kafka-connector/src/main/docs/camel-rest-openapi-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-rest-openapi-kafka-connector-sink]]
+= camel-rest-openapi-kafka-connector sink configuration
+
+When using camel-rest-openapi-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-openapi-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest-openapi sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.specificationUri* | Path to the OpenApi specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load openapi.json resource from the classpath. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \http://api.example.com:8080). Overrides component configuration. The OpenApi specification can be loaded from different sources by prefixing with file: classpath: http: https:. Support for https is limited to using the JDK installed UrlHandler, and as such it can be cumbersome to setup TLS/SSL certificates for https (such as setting a number of javax.net.ssl JVM system properties). How to do that consult the JDK documentation for UrlHandler. Default value notice: By default loads openapi.json file | "openapi.json" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.operationId* | ID of the operation from the OpenApi specification. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in OpenApi specification and in the component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Overrides component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the OpenApi specification and. in the component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-openapi next, and global configuration last. If set overrides any value found in the OpenApi specification, RestConfiguration. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in OpenApi specification. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the OpenApi specification. Can be overridden in endpoint configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-openapi next, and global configuration last. If set overrides any value found in the OpenApi specification, RestConfiguration. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.specificationUri* | Path to the OpenApi specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load openapi.json resource. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \https://api.example.com:8080). Can be overridden in endpoint configuration. | "openapi.json" | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.sslContextParameters* | Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rest-swagger-kafka-connector/pom.xml b/connectors/camel-rest-swagger-kafka-connector/pom.xml
index 260e7c3..6f5c00f 100644
--- a/connectors/camel-rest-swagger-kafka-connector/pom.xml
+++ b/connectors/camel-rest-swagger-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-rest-swagger-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: rest-swagger</name>
diff --git a/connectors/camel-rest-swagger-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rest-swagger-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-rest-swagger-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-rest-swagger-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-rest-swagger-kafka-connector/src/main/docs/camel-rest-swagger-kafka-sink-connector.adoc b/connectors/camel-rest-swagger-kafka-connector/src/main/docs/camel-rest-swagger-kafka-sink-connector.adoc
new file mode 100644
index 0000000..01ec5f3
--- /dev/null
+++ b/connectors/camel-rest-swagger-kafka-connector/src/main/docs/camel-rest-swagger-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-rest-swagger-kafka-connector-sink]]
+= camel-rest-swagger-kafka-connector sink configuration
+
+When using camel-rest-swagger-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-swagger-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest-swagger sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.specificationUri* | Path to the Swagger specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load swagger.json resource from the classpath. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \http://api.example.com:8080). Overrides component configuration. The Swagger specification can be loaded from different sources by prefixing with file: classpath: http: https:. Support for https is limited to using the JDK installed UrlHandler, and as such it can be cumbersome to setup TLS/SSL certificates for https (such as setting a number of javax.net.ssl JVM system properties). How to do that consult the JDK documentation for UrlHandler. Default value notice: By default loads swagger.json file | "swagger.json" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.operationId* | ID of the operation from the Swagger specification. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in Swagger specification and in the component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Overrides component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the Swagger specification and. in the component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-swagger next, and global configuration last. If set overrides any value found in the Swagger specification, RestConfiguration. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the Swagger specification. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in Swagger specification. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the Swagger specification. Can be overridden in endpoint configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-swagger next, and global configuration last. If set overrides any value found in the Swagger specification, RestConfiguration. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the Swagger specification. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.specificationUri* | Path to the Swagger specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load swagger.json resource. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \https://api.example.com:8080). Can be overridden in endpoint configuration. | "swagger.json" | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.sslContextParameters* | Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-robotframework-kafka-connector/pom.xml b/connectors/camel-robotframework-kafka-connector/pom.xml
index 1caccb4..c5fb924 100644
--- a/connectors/camel-robotframework-kafka-connector/pom.xml
+++ b/connectors/camel-robotframework-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-robotframework-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: robotframework</name>
diff --git a/connectors/camel-robotframework-kafka-connector/src/main/assembly/package.xml b/connectors/camel-robotframework-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-robotframework-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-robotframework-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-robotframework-kafka-connector/src/main/docs/camel-robotframework-kafka-sink-connector.adoc b/connectors/camel-robotframework-kafka-connector/src/main/docs/camel-robotframework-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f168ade
--- /dev/null
+++ b/connectors/camel-robotframework-kafka-connector/src/main/docs/camel-robotframework-kafka-sink-connector.adoc
@@ -0,0 +1,79 @@
+// kafka-connector options: START
+[[camel-robotframework-kafka-connector-sink]]
+= camel-robotframework-kafka-connector sink configuration
+
+When using camel-robotframework-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-robotframework-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-robotframework sink connector supports 53 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.argumentFile* | A text file to read more arguments from. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.combinedTagStats* | Creates combined statistics based on tags. Use the format tags:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.criticalTags* | Tests that have the given tags are considered critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugFile* | A debug file that is written during execution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.document* | Sets the documentation of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dryrun* | Sets dryrun mode on use. In the dry run mode tests are run without executing keywords originating from test libraries. Useful for validating test data syntax. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.excludes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exitOnFailure* | Sets robot to stop execution immediately if a critical test fails. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listener* | Sets a single listener for monitoring tests execution | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listeners* | Sets multiple listeners for monitoring tests execution. Use the format ListenerWithArgs:arg1:arg2 or simply ListenerWithoutArgs List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.log* | Sets the path to the generated log file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logLevel* | Sets the threshold level for logging. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logTitle* | Sets a title for the generated tests log. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metadata* | Sets free metadata for the top level tests suites. comma seperated list of string resulting as List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.monitorColors* | Using ANSI colors in console. Normally colors work in unixes but not in Windows. Default is 'on'. 'on' - use colors in unixes but not in Windows 'off' - never use colors 'force' - always use colors (also in Windows) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.monitorWidth* | Width of the monitor output. Default is 78. | "78" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | Sets the name of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nonCriticalTags* | Tests that have the given tags are not critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noStatusReturnCode* | If true, sets the return code to zero regardless of failures in test cases. Error codes are returned normally. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Sets the path to the generated output file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputDirectory* | Configures where generated reports are to be placed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.randomize* | Sets the test execution order to be randomized. Valid values are all, suite, and test | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.report* | Sets the path to the generated report file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportBackground* | Sets background colors for the generated report and summary. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportTitle* | Sets a title for the generated tests report. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.runEmptySuite* | Executes tests also if the top level test suite is empty. Useful e.g. with --include/--exclude when it is not an error that no test matches the condition. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.runFailed* | Re-run failed tests, based on output.xml file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.runMode* | Sets the execution mode for this tests run. Note that this setting has been deprecated in Robot Framework 2.8. Use separate dryryn, skipTeardownOnExit, exitOnFailure, and randomize settings instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipTeardownOnExit* | Sets whether the teardowns are skipped if the test execution is prematurely stopped. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splitOutputs* | Splits output and log files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suites* | Selects the tests suites by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suiteStatLevel* | Defines how many levels to show in the Statistics by Suite table in outputs. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.summaryTitle* | Sets a title for the generated summary report. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagDocs* | Adds documentation to the specified tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tags* | Sets the tags(s) to all executed tests cases. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagStatExcludes* | Excludes these tags from the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagStatIncludes* | Includes only these tags in the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagStatLinks* | Adds external links to the Statistics by Tag table in outputs. Use the format pattern:link:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tests* | Selects the tests cases by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timestampOutputs* | Adds a timestamp to all output files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.variableFiles* | Sets variables using variables files. Use the format path:args List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.variables* | Sets individual variables. Use the format name:value List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.warnOnSkippedFiles* | Show a warning when an invalid file is skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xunitFile* | Sets the path to the generated XUnit compatible result file, relative to outputDirectory. The file is in xml format. By default, the file name is derived from the testCasesDirectory parameter, replacing blanks in the directory name by underscores. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-robotframework-kafka-connector/src/main/docs/camel-robotframework-kafka-source-connector.adoc b/connectors/camel-robotframework-kafka-connector/src/main/docs/camel-robotframework-kafka-source-connector.adoc
new file mode 100644
index 0000000..d198f2c
--- /dev/null
+++ b/connectors/camel-robotframework-kafka-connector/src/main/docs/camel-robotframework-kafka-source-connector.adoc
@@ -0,0 +1,97 @@
+// kafka-connector options: START
+[[camel-robotframework-kafka-connector-source]]
+= camel-robotframework-kafka-connector source configuration
+
+When using camel-robotframework-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-robotframework-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-robotframework source connector supports 71 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.argumentFile* | A text file to read more arguments from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.combinedTagStats* | Creates combined statistics based on tags. Use the format tags:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.criticalTags* | Tests that have the given tags are considered critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugFile* | A debug file that is written during execution. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.document* | Sets the documentation of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dryrun* | Sets dryrun mode on use. In the dry run mode tests are run without executing keywords originating from test libraries. Useful for validating test data syntax. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.excludes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exitOnFailure* | Sets robot to stop execution immediately if a critical test fails. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listener* | Sets a single listener for monitoring tests execution | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listeners* | Sets multiple listeners for monitoring tests execution. Use the format ListenerWithArgs:arg1:arg2 or simply ListenerWithoutArgs List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.log* | Sets the path to the generated log file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logLevel* | Sets the threshold level for logging. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logTitle* | Sets a title for the generated tests log. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.metadata* | Sets free metadata for the top level tests suites. comma seperated list of string resulting as List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.monitorColors* | Using ANSI colors in console. Normally colors work in unixes but not in Windows. Default is 'on'. 'on' - use colors in unixes but not in Windows 'off' - never use colors 'force' - always use colors (also in Windows) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.monitorWidth* | Width of the monitor output. Default is 78. | "78" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.name* | Sets the name of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nonCriticalTags* | Tests that have the given tags are not critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noStatusReturnCode* | If true, sets the return code to zero regardless of failures in test cases. Error codes are returned normally. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.output* | Sets the path to the generated output file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputDirectory* | Configures where generated reports are to be placed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.randomize* | Sets the test execution order to be randomized. Valid values are all, suite, and test | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.report* | Sets the path to the generated report file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportBackground* | Sets background colors for the generated report and summary. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportTitle* | Sets a title for the generated tests report. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runEmptySuite* | Executes tests also if the top level test suite is empty. Useful e.g. with --include/--exclude when it is not an error that no test matches the condition. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runFailed* | Re-run failed tests, based on output.xml file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runMode* | Sets the execution mode for this tests run. Note that this setting has been deprecated in Robot Framework 2.8. Use separate dryryn, skipTeardownOnExit, exitOnFailure, and randomize settings instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipTeardownOnExit* | Sets whether the teardowns are skipped if the test execution is prematurely stopped. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitOutputs* | Splits output and log files. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.suites* | Selects the tests suites by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.suiteStatLevel* | Defines how many levels to show in the Statistics by Suite table in outputs. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.summaryTitle* | Sets a title for the generated summary report. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagDocs* | Adds documentation to the specified tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tags* | Sets the tags(s) to all executed tests cases. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagStatExcludes* | Excludes these tags from the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagStatIncludes* | Includes only these tags in the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagStatLinks* | Adds external links to the Statistics by Tag table in outputs. Use the format pattern:link:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tests* | Selects the tests cases by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timestampOutputs* | Adds a timestamp to all output files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.variableFiles* | Sets variables using variables files. Use the format path:args List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.variables* | Sets individual variables. Use the format name:value List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.warnOnSkippedFiles* | Show a warning when an invalid file is skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.xunitFile* | Sets the path to the generated XUnit compatible result file, relative to outputDirectory. The file is in xml format. By default, the file name is derived from the testCasesDirectory parameter, replacing blanks in the directory name by underscores. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-rss-kafka-connector/pom.xml b/connectors/camel-rss-kafka-connector/pom.xml
index 05f9474..07b54dd 100644
--- a/connectors/camel-rss-kafka-connector/pom.xml
+++ b/connectors/camel-rss-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-rss-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: rss</name>
diff --git a/connectors/camel-rss-kafka-connector/src/main/assembly/package.xml b/connectors/camel-rss-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-rss-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-rss-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-rss-kafka-connector/src/main/docs/camel-rss-kafka-source-connector.adoc b/connectors/camel-rss-kafka-connector/src/main/docs/camel-rss-kafka-source-connector.adoc
new file mode 100644
index 0000000..96f632f
--- /dev/null
+++ b/connectors/camel-rss-kafka-connector/src/main/docs/camel-rss-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-rss-kafka-connector-source]]
+= camel-rss-kafka-connector source configuration
+
+When using camel-rss-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rss-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rss source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.feedUri* | The URI to the feed to poll. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.feedHeader* | Sets whether to add the feed object as a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Sets whether to use filtering or not of the entries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lastUpdate* | Sets the timestamp to be used for filtering entries from the atom feeds. This options is only in conjunction with the splitEntries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortEntries* | Sets whether to sort entries by published date. Only works when splitEntries = true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitEntries* | Sets whether or not entries should be sent individually or whether the entire feed should be sent as a single message | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throttleEntries* | Sets whether all entries identified in a single feed poll should be delivered immediately. If true, only one entry is processed per consumer.delay. Only applicable when splitEntries = true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Sets the username to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rss.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rss.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-saga-kafka-connector/pom.xml b/connectors/camel-saga-kafka-connector/pom.xml
index 21ea693..1275981 100644
--- a/connectors/camel-saga-kafka-connector/pom.xml
+++ b/connectors/camel-saga-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-saga-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: saga</name>
diff --git a/connectors/camel-saga-kafka-connector/src/main/assembly/package.xml b/connectors/camel-saga-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-saga-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-saga-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-saga-kafka-connector/src/main/docs/camel-saga-kafka-sink-connector.adoc b/connectors/camel-saga-kafka-connector/src/main/docs/camel-saga-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4dc3913
--- /dev/null
+++ b/connectors/camel-saga-kafka-connector/src/main/docs/camel-saga-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-saga-kafka-connector-sink]]
+= camel-saga-kafka-connector sink configuration
+
+When using camel-saga-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-saga-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-saga sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.action* | Action to execute (complete or compensate) One of: [COMPLETE] [COMPENSATE] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.saga.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.saga.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-salesforce-kafka-connector/pom.xml b/connectors/camel-salesforce-kafka-connector/pom.xml
index 1e5614c..cb06076 100644
--- a/connectors/camel-salesforce-kafka-connector/pom.xml
+++ b/connectors/camel-salesforce-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-salesforce-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: salesforce</name>
diff --git a/connectors/camel-salesforce-kafka-connector/src/main/assembly/package.xml b/connectors/camel-salesforce-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-salesforce-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-salesforce-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-salesforce-kafka-connector/src/main/docs/camel-salesforce-kafka-sink-connector.adoc b/connectors/camel-salesforce-kafka-connector/src/main/docs/camel-salesforce-kafka-sink-connector.adoc
new file mode 100644
index 0000000..070ca93
--- /dev/null
+++ b/connectors/camel-salesforce-kafka-connector/src/main/docs/camel-salesforce-kafka-sink-connector.adoc
@@ -0,0 +1,101 @@
+// kafka-connector options: START
+[[camel-salesforce-kafka-connector-sink]]
+= camel-salesforce-kafka-connector sink configuration
+
+When using camel-salesforce-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-salesforce-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-salesforce sink connector supports 75 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operationName* | The operation to use One of: [getVersions] [getResources] [getGlobalObjects] [getBasicInfo] [getDescription] [getSObject] [createSObject] [updateSObject] [deleteSObject] [getSObjectWithId] [upsertSObject] [deleteSObjectWithId] [getBlobField] [query] [queryMore] [queryAll] [search] [apexCall] [recent] [createJob] [getJob] [closeJob] [abortJob] [createBatch] [getBatch] [getAllBatches] [getRequest] [getResults] [createBatchQuery] [getQueryResultIds] [getQueryResult] [getRecentReports] [getReportDescription] [executeSyncReport] [executeAsyncReport] [getReportInstances] [getReportResults] [limits] [approval] [approvals] [composite-tree] [composite-batch] [composite] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apexMethod* | APEX method name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apexQueryParams* | Query params for APEX method | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apexUrl* | APEX method URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiVersion* | Salesforce API version, defaults to SalesforceEndpointConfig.DEFAULT_VERSION | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.backoffIncrement* | Backoff interval increment for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batchId* | Bulk API Batch ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Bulk API content type, one of XML, CSV, ZIP_XML, ZIP_CSV One of: [XML] [CSV] [JSON] [ZIP_XML] [ZIP_CSV] [ZIP_JSON] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultReplayId* | Default replayId setting if no value is found in initialReplayIdMap | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.format* | Payload format to use for Salesforce API calls, either JSON or XML, defaults to JSON One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | Custom Jetty Http Client to use to connect to Salesforce. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeDetails* | Include details in Salesforce1 Analytics report, defaults to false. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialReplayIdMap* | Replay IDs to start from per channel name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.instanceId* | Salesforce1 Analytics report execution instance ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobId* | Bulk API Job ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.limit* | Limit on number of returned records. Applicable to some of the API, check the Salesforce documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxBackoff* | Maximum backoff interval for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notFoundBehaviour* | Sets the behaviour of 404 not found status received from Salesforce API. Should the body be set to NULL NotFoundBehaviour#NULL or should a exception be signaled on the exchange NotFoundBehaviour#EXCEPTION - the default. One of: [EXCEPTION] [NULL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForFields* | Notify for fields, options are ALL, REFERENCED, SELECT, WHERE One of: [ALL] [REFERENCED] [SELECT] [WHERE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationCreate* | Notify for create operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationDelete* | Notify for delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperations* | Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version 29.0) One of: [ALL] [CREATE] [EXTENDED] [UPDATE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationUndelete* | Notify for un-delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationUpdate* | Notify for update operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.objectMapper* | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rawPayload* | Use raw payload String for request and response (either JSON or XML depending on format), instead of DTOs, false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportId* | Salesforce1 Analytics report Id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportMetadata* | Salesforce1 Analytics report metadata for filtering | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultId* | Bulk API Result ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectBlobFieldName* | SObject blob field name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectClass* | Fully qualified SObject class name, usually generated using camel-salesforce-maven-plugin | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectFields* | SObject fields to retrieve | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectId* | SObject ID if required by API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectIdName* | SObject external ID field name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectIdValue* | SObject external ID field value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectName* | SObject name if required or supported by API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectQuery* | Salesforce SOQL query string | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectSearch* | Salesforce SOSL search string | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.updateTopic* | Whether to update an existing Push Topic when using the Streaming API, defaults to false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientConnection Timeout* | Connection timeout used by the HttpClient when connecting to the Salesforce server. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientIdleTimeout* | Timeout used by the HttpClient when waiting for response from the Salesforce server. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpMaxContentLength* | Max content length of an HTTP response. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.packages* | In what packages are the generated DTO classes. Typically the classes would be generated using camel-salesforce-maven-plugin. Set it if using the generated DTOs to gain the benefit of using short SObject names in parameters/header values. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.config* | Global endpoint configuration - use to set values that are common to all endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientProperties* | Used to set any properties that can be configured on the underlying HTTP client. Have a look at properties of SalesforceHttpClient and the Jetty HttpClient for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.longPollingTransport Properties* | Used to set any properties that can be configured on the LongPollingTransport used by the BayeuxClient (CometD) used by the streaming api | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyExcluded Addresses* | A list of addresses for which HTTP proxy server should not be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyHost* | Hostname of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyIncluded Addresses* | A list of addresses for which HTTP proxy server should be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPort* | Port number of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySocks4* | If set to true the configures the HTTP proxy to use as a SOCKS4 proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.authenticationType* | Explicit authentication method to be used, one of USERNAME_PASSWORD, REFRESH_TOKEN or JWT. Salesforce component can auto-determine the authentication method to use from the properties set, set this property to eliminate any ambiguity. One of: [USERNAME_PASSWORD] [REFRESH_TOKEN] [JWT] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.clientId* | OAuth Consumer Key of the connected app configured in the Salesforce instance setup. Typically a connected app needs to be configured but one can be provided by installing a package. | null | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.clientSecret* | OAuth Consumer Secret of the connected app configured in the Salesforce instance setup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyAuthUri* | Used in authentication against the HTTP proxy server, needs to match the URI of the proxy server in order for the httpProxyUsername and httpProxyPassword to be used for authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPassword* | Password to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyRealm* | Realm of the proxy server, used in preemptive Basic/Digest authentication methods against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUseDigestAuth* | If set to true Digest authentication will be used when authenticating to the HTTP proxy, otherwise Basic authorization method will be used | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUsername* | Username to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.instanceUrl* | URL of the Salesforce instance used after authentication, by default received from Salesforce on successful authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySecure* | If set to false disables the use of TLS when accessing the HTTP proxy. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.keystore* | KeyStore parameters to use in OAuth JWT flow. The KeyStore should contain only one entry with private key and certificate. Salesforce does not verify the certificate chain, so this can easily be a selfsigned certificate. Make sure that you upload the certificate to the corresponding connected app. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.lazyLogin* | If set to true prevents the component from authenticating to Salesforce with the start of the component. You would generally set this to the (default) false and authenticate early and be immediately aware of any authentication issues. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginConfig* | All authentication configuration in one nested bean, all properties set there can be set directly on the component as well | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginUrl* | URL of the Salesforce instance used for authentication, by default set to \https://login.salesforce.com | "https://login.salesforce.com" | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.password* | Password used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. Make sure that you append security token to the end of the password if using one. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.refreshToken* | Refresh token already obtained in the refresh token OAuth flow. One needs to setup a web application and configure a callback URL to receive the refresh token, or configure using the builtin callback at \https://login.salesforce.com/services/oauth2/success or \https://test.salesforce.com/services/oauth2/success and then retrive the refresh_token from the URL at the end of the flow. Note that in development organizations Salesforce allows hosting the callback web application at localhost. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.sslContextParameters* | SSL parameters to use, see SSLContextParameters class for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.userName* | Username used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-salesforce-kafka-connector/src/main/docs/camel-salesforce-kafka-source-connector.adoc b/connectors/camel-salesforce-kafka-connector/src/main/docs/camel-salesforce-kafka-source-connector.adoc
new file mode 100644
index 0000000..3585f75
--- /dev/null
+++ b/connectors/camel-salesforce-kafka-connector/src/main/docs/camel-salesforce-kafka-source-connector.adoc
@@ -0,0 +1,104 @@
+// kafka-connector options: START
+[[camel-salesforce-kafka-connector-source]]
+= camel-salesforce-kafka-connector source configuration
+
+When using camel-salesforce-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-salesforce-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-salesforce source connector supports 78 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topicName* | The name of the topic/channel to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apexMethod* | APEX method name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apexQueryParams* | Query params for APEX method | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apexUrl* | APEX method URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apiVersion* | Salesforce API version, defaults to SalesforceEndpointConfig.DEFAULT_VERSION | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIncrement* | Backoff interval increment for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.batchId* | Bulk API Batch ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Bulk API content type, one of XML, CSV, ZIP_XML, ZIP_CSV One of: [XML] [CSV] [JSON] [ZIP_XML] [ZIP_CSV] [ZIP_JSON] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultReplayId* | Default replayId setting if no value is found in initialReplayIdMap | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.format* | Payload format to use for Salesforce API calls, either JSON or XML, defaults to JSON One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClient* | Custom Jetty Http Client to use to connect to Salesforce. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeDetails* | Include details in Salesforce1 Analytics report, defaults to false. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialReplayIdMap* | Replay IDs to start from per channel name. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.instanceId* | Salesforce1 Analytics report execution instance ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobId* | Bulk API Job ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | Limit on number of returned records. Applicable to some of the API, check the Salesforce documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBackoff* | Maximum backoff interval for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notFoundBehaviour* | Sets the behaviour of 404 not found status received from Salesforce API. Should the body be set to NULL NotFoundBehaviour#NULL or should a exception be signaled on the exchange NotFoundBehaviour#EXCEPTION - the default. One of: [EXCEPTION] [NULL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForFields* | Notify for fields, options are ALL, REFERENCED, SELECT, WHERE One of: [ALL] [REFERENCED] [SELECT] [WHERE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationCreate* | Notify for create operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationDelete* | Notify for delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperations* | Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version 29.0) One of: [ALL] [CREATE] [EXTENDED] [UPDATE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationUndelete* | Notify for un-delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationUpdate* | Notify for update operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectMapper* | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rawPayload* | Use raw payload String for request and response (either JSON or XML depending on format), instead of DTOs, false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportId* | Salesforce1 Analytics report Id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportMetadata* | Salesforce1 Analytics report metadata for filtering | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultId* | Bulk API Result ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectBlobFieldName* | SObject blob field name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectClass* | Fully qualified SObject class name, usually generated using camel-salesforce-maven-plugin | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectFields* | SObject fields to retrieve | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectId* | SObject ID if required by API | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectIdName* | SObject external ID field name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectIdValue* | SObject external ID field value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectName* | SObject name if required or supported by API | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectQuery* | Salesforce SOQL query string | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectSearch* | Salesforce SOSL search string | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.updateTopic* | Whether to update an existing Push Topic when using the Streaming API, defaults to false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replayId* | The replayId value to use when subscribing | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientConnection Timeout* | Connection timeout used by the HttpClient when connecting to the Salesforce server. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientIdleTimeout* | Timeout used by the HttpClient when waiting for response from the Salesforce server. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpMaxContentLength* | Max content length of an HTTP response. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.packages* | In what packages are the generated DTO classes. Typically the classes would be generated using camel-salesforce-maven-plugin. Set it if using the generated DTOs to gain the benefit of using short SObject names in parameters/header values. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.config* | Global endpoint configuration - use to set values that are common to all endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientProperties* | Used to set any properties that can be configured on the underlying HTTP client. Have a look at properties of SalesforceHttpClient and the Jetty HttpClient for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.longPollingTransport Properties* | Used to set any properties that can be configured on the LongPollingTransport used by the BayeuxClient (CometD) used by the streaming api | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyExcluded Addresses* | A list of addresses for which HTTP proxy server should not be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyHost* | Hostname of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyIncluded Addresses* | A list of addresses for which HTTP proxy server should be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPort* | Port number of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySocks4* | If set to true the configures the HTTP proxy to use as a SOCKS4 proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.authenticationType* | Explicit authentication method to be used, one of USERNAME_PASSWORD, REFRESH_TOKEN or JWT. Salesforce component can auto-determine the authentication method to use from the properties set, set this property to eliminate any ambiguity. One of: [USERNAME_PASSWORD] [REFRESH_TOKEN] [JWT] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.clientId* | OAuth Consumer Key of the connected app configured in the Salesforce instance setup. Typically a connected app needs to be configured but one can be provided by installing a package. | null | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.clientSecret* | OAuth Consumer Secret of the connected app configured in the Salesforce instance setup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyAuthUri* | Used in authentication against the HTTP proxy server, needs to match the URI of the proxy server in order for the httpProxyUsername and httpProxyPassword to be used for authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPassword* | Password to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyRealm* | Realm of the proxy server, used in preemptive Basic/Digest authentication methods against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUseDigestAuth* | If set to true Digest authentication will be used when authenticating to the HTTP proxy, otherwise Basic authorization method will be used | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUsername* | Username to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.instanceUrl* | URL of the Salesforce instance used after authentication, by default received from Salesforce on successful authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySecure* | If set to false disables the use of TLS when accessing the HTTP proxy. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.keystore* | KeyStore parameters to use in OAuth JWT flow. The KeyStore should contain only one entry with private key and certificate. Salesforce does not verify the certificate chain, so this can easily be a selfsigned certificate. Make sure that you upload the certificate to the corresponding connected app. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.lazyLogin* | If set to true prevents the component from authenticating to Salesforce with the start of the component. You would generally set this to the (default) false and authenticate early and be immediately aware of any authentication issues. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginConfig* | All authentication configuration in one nested bean, all properties set there can be set directly on the component as well | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginUrl* | URL of the Salesforce instance used for authentication, by default set to \https://login.salesforce.com | "https://login.salesforce.com" | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.password* | Password used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. Make sure that you append security token to the end of the password if using one. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.refreshToken* | Refresh token already obtained in the refresh token OAuth flow. One needs to setup a web application and configure a callback URL to receive the refresh token, or configure using the builtin callback at \https://login.salesforce.com/services/oauth2/success or \https://test.salesforce.com/services/oauth2/success and then retrive the refresh_token from the URL at the end of the flow. Note that in development organizations Salesforce allows hosting the callback web application at localhost. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.sslContextParameters* | SSL parameters to use, see SSLContextParameters class for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.userName* | Username used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sap-netweaver-kafka-connector/pom.xml b/connectors/camel-sap-netweaver-kafka-connector/pom.xml
index 531c1f4..265c544 100644
--- a/connectors/camel-sap-netweaver-kafka-connector/pom.xml
+++ b/connectors/camel-sap-netweaver-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sap-netweaver-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sap-netweaver</name>
diff --git a/connectors/camel-sap-netweaver-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sap-netweaver-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sap-netweaver-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sap-netweaver-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sap-netweaver-kafka-connector/src/main/docs/camel-sap-netweaver-kafka-sink-connector.adoc b/connectors/camel-sap-netweaver-kafka-connector/src/main/docs/camel-sap-netweaver-kafka-sink-connector.adoc
new file mode 100644
index 0000000..740b41b
--- /dev/null
+++ b/connectors/camel-sap-netweaver-kafka-connector/src/main/docs/camel-sap-netweaver-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-sap-netweaver-kafka-connector-sink]]
+= camel-sap-netweaver-kafka-connector sink configuration
+
+When using camel-sap-netweaver-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sap-netweaver-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sap-netweaver sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Url to the SAP net-weaver gateway server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.flatternMap* | If the JSON Map contains only a single entry, then flattern by storing that single entry value as the message body. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.json* | Whether to return data in JSON format. If this option is false, then XML is returned in Atom format. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonAsMap* | To transform the JSON from a String to a Map in the message body. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for account. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | Username for account. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sap-netweaver.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sap-netweaver.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-scheduler-kafka-connector/pom.xml b/connectors/camel-scheduler-kafka-connector/pom.xml
index 97304f9..e673a04 100644
--- a/connectors/camel-scheduler-kafka-connector/pom.xml
+++ b/connectors/camel-scheduler-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-scheduler-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: scheduler</name>
diff --git a/connectors/camel-scheduler-kafka-connector/src/main/assembly/package.xml b/connectors/camel-scheduler-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-scheduler-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-scheduler-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-scheduler-kafka-connector/src/main/docs/camel-scheduler-kafka-source-connector.adoc b/connectors/camel-scheduler-kafka-connector/src/main/docs/camel-scheduler-kafka-source-connector.adoc
new file mode 100644
index 0000000..6271255
--- /dev/null
+++ b/connectors/camel-scheduler-kafka-connector/src/main/docs/camel-scheduler-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-scheduler-kafka-connector-source]]
+= camel-scheduler-kafka-connector source configuration
+
+When using camel-scheduler-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-scheduler-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-scheduler source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | The name of the scheduler | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentTasks* | Number of threads used by the scheduling thread pool. Is by default using a single thread | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.scheduler.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scheduler.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scheduler.concurrentTasks* | Number of threads used by the scheduling thread pool. Is by default using a single thread | 1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-schematron-kafka-connector/pom.xml b/connectors/camel-schematron-kafka-connector/pom.xml
index 701f81b..f94d176 100644
--- a/connectors/camel-schematron-kafka-connector/pom.xml
+++ b/connectors/camel-schematron-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-schematron-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: schematron</name>
diff --git a/connectors/camel-schematron-kafka-connector/src/main/assembly/package.xml b/connectors/camel-schematron-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-schematron-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-schematron-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-schematron-kafka-connector/src/main/docs/camel-schematron-kafka-sink-connector.adoc b/connectors/camel-schematron-kafka-connector/src/main/docs/camel-schematron-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cf61d21
--- /dev/null
+++ b/connectors/camel-schematron-kafka-connector/src/main/docs/camel-schematron-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-schematron-kafka-connector-sink]]
+= camel-schematron-kafka-connector sink configuration
+
+When using camel-schematron-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-schematron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-schematron sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.path* | The path to the schematron rules file. Can either be in class path or location in the file system. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.abort* | Flag to abort the route and throw a schematron validation exception. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rules* | To use the given schematron rules instead of loading from the path | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | Set the URIResolver to be used for resolving schematron includes in the rules file. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.schematron.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.schematron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-scp-kafka-connector/pom.xml b/connectors/camel-scp-kafka-connector/pom.xml
index b588825..4ca975a 100644
--- a/connectors/camel-scp-kafka-connector/pom.xml
+++ b/connectors/camel-scp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-scp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: scp</name>
diff --git a/connectors/camel-scp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-scp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-scp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-scp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-scp-kafka-connector/src/main/docs/camel-scp-kafka-sink-connector.adoc b/connectors/camel-scp-kafka-connector/src/main/docs/camel-scp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e7c3ef7
--- /dev/null
+++ b/connectors/camel-scp-kafka-connector/src/main/docs/camel-scp-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-scp-kafka-connector-sink]]
+= camel-scp-kafka-connector sink configuration
+
+When using camel-scp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-scp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-scp sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=664. | "664" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.strictHostKeyChecking* | Sets whether to use strict host key checking. Possible values are: no, yes One of: [no] [yes] | "no" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsFile* | Sets the known_hosts file, so that the jsch endpoint can do host key verification. You can prefix with classpath: to load the file from classpath instead of file system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preferredAuthentications* | Set a comma separated list of authentications that will be used in order of preference. Possible authentication methods are defined by JCraft JSCH. Some examples include: gssapi-with-mic,publickey,keyboard-interactive,password If not specified the JSCH and/or system defaults will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyBytes* | Set the private key bytes to that the endpoint can do private key verification. This must be used only if privateKeyFile wasn't set. Otherwise the file will have the priority. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFile* | Set the private key file to that the endpoint can do private key verification. You can prefix with classpath: to load the file from classpath instead of file system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFilePassphrase* | Set the private key file passphrase to that the endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useUserKnownHostsFile* | If knownHostFile has not been explicit configured, then use the host file from System.getProperty(user.home) /.ssh/known_hosts | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ciphers* | Set a comma separated list of ciphers that will be used in order of preference. Possible cipher names are defined by JCraft JSCH. Some examples include: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.scp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scp.verboseLogging* | JSCH is verbose logging out of the box. Therefore we turn the logging down to DEBUG logging by default. But setting this option to true turns on the verbose logging again. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-seda-kafka-connector/pom.xml b/connectors/camel-seda-kafka-connector/pom.xml
index 1e0200a..fc243e6 100644
--- a/connectors/camel-seda-kafka-connector/pom.xml
+++ b/connectors/camel-seda-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-seda-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: seda</name>
diff --git a/connectors/camel-seda-kafka-connector/src/main/assembly/package.xml b/connectors/camel-seda-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-seda-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-seda-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-seda-kafka-connector/src/main/docs/camel-seda-kafka-sink-connector.adoc b/connectors/camel-seda-kafka-connector/src/main/docs/camel-seda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..915b737
--- /dev/null
+++ b/connectors/camel-seda-kafka-connector/src/main/docs/camel-seda-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-seda-kafka-connector-sink]]
+= camel-seda-kafka-connector sink configuration
+
+When using camel-seda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-seda sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardIfNoConsumers* | Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerTimeout* | offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultBlockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultDiscardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultOfferTimeout* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-seda-kafka-connector/src/main/docs/camel-seda-kafka-source-connector.adoc b/connectors/camel-seda-kafka-connector/src/main/docs/camel-seda-kafka-source-connector.adoc
new file mode 100644
index 0000000..56ad562
--- /dev/null
+++ b/connectors/camel-seda-kafka-connector/src/main/docs/camel-seda-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-seda-kafka-connector-source]]
+= camel-seda-kafka-connector source configuration
+
+When using camel-seda-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-seda source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limitConcurrentConsumers* | Whether to limit the number of concurrentConsumers to the maximum of 500. By default, an exception will be thrown if an endpoint is configured with a greater number. You can disable that check by turning this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use SEDA for Publish-Subscribe messaging. That is, you can send a message to the SEDA queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when polling. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.purgeWhenStopping* | Whether to purge the task queue when stopping the consumer/route. This allows to stop faster, as any pending messages on the queue is discarded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.concurrentConsumers* | Sets the default number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-service-kafka-connector/pom.xml b/connectors/camel-service-kafka-connector/pom.xml
index b7d7692..b47272f 100644
--- a/connectors/camel-service-kafka-connector/pom.xml
+++ b/connectors/camel-service-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-service-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: service</name>
diff --git a/connectors/camel-service-kafka-connector/src/main/assembly/package.xml b/connectors/camel-service-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-service-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-service-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-service-kafka-connector/src/main/docs/camel-service-kafka-source-connector.adoc b/connectors/camel-service-kafka-connector/src/main/docs/camel-service-kafka-source-connector.adoc
new file mode 100644
index 0000000..66b8082
--- /dev/null
+++ b/connectors/camel-service-kafka-connector/src/main/docs/camel-service-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-service-kafka-connector-source]]
+= camel-service-kafka-connector source configuration
+
+When using camel-service-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-service-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-service source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.delegateUri* | The endpoint uri to expose as service | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.service.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.service.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.service.service* | Inject the service to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.service.serviceSelector* | Inject the service selector used to lookup the ServiceRegistry to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-servicenow-kafka-connector/pom.xml b/connectors/camel-servicenow-kafka-connector/pom.xml
index e12685f..c614515 100644
--- a/connectors/camel-servicenow-kafka-connector/pom.xml
+++ b/connectors/camel-servicenow-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-servicenow-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: servicenow</name>
diff --git a/connectors/camel-servicenow-kafka-connector/src/main/assembly/package.xml b/connectors/camel-servicenow-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-servicenow-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-servicenow-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-servicenow-kafka-connector/src/main/docs/camel-servicenow-kafka-sink-connector.adoc b/connectors/camel-servicenow-kafka-connector/src/main/docs/camel-servicenow-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8305bdf
--- /dev/null
+++ b/connectors/camel-servicenow-kafka-connector/src/main/docs/camel-servicenow-kafka-sink-connector.adoc
@@ -0,0 +1,88 @@
+// kafka-connector options: START
+[[camel-servicenow-kafka-connector-sink]]
+= camel-servicenow-kafka-connector sink configuration
+
+When using camel-servicenow-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-servicenow-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-servicenow sink connector supports 62 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.instanceName* | The ServiceNow instance name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.display* | Set this parameter to true to return only scorecards where the indicator Display field is selected. Set this parameter to all to return scorecards with any Display field value. This parameter is true by default. One of: [false] [true] [all] | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.displayValue* | Return the display value (true), actual value (false), or both (all) for reference fields (default: false) One of: [false] [true] [all] | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.excludeReferenceLink* | True to exclude Table API links for reference fields (default: false) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.favorites* | Set this parameter to true to return only scorecards that are favorites of the querying user. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAggregates* | Set this parameter to true to always return all available aggregates for an indicator, including when an aggregate has already been applied. If a value is not specified, this parameter defaults to false and returns no aggregates. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAvailableAggregates* | Set this parameter to true to return all available aggregates for an indicator when no aggregate has been applied. If a value is not specified, this parameter defaults to false and returns no aggregates. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAvailableBreakdowns* | Set this parameter to true to return all available breakdowns for an indicator. If a value is not specified, this parameter defaults to false and returns no breakdowns. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeScoreNotes* | Set this parameter to true to return all notes associated with the score. The note element contains the note text as well as the author and timestamp when the note was added. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeScores* | Set this parameter to true to return all scores for a scorecard. If a value is not specified, this parameter defaults to false and returns only the most recent score value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputDisplayValue* | True to set raw value of input fields (default: false) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | Set this parameter to true to return only scorecards for key indicators. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.models* | Defines both request and response models | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.perPage* | Enter the maximum number of scorecards each query can return. By default this value is 10, and the maximum is 100. | "10" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.release* | The ServiceNow release to target, default to Helsinki See \https://docs.servicenow.com One of: [FUJI] [GENEVA] [HELSINKI] | "HELSINKI" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestModels* | Defines the request model | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resource* | The default resource, can be overridden by header CamelServiceNowResource | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.responseModels* | Defines the response model | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sortBy* | Specify the value to use when sorting results. By default, queries sort records by value. One of: [value] [change] [changeperc] [gap] [gapperc] [duedate] [name] [order] [default] [group] [indicator_group] [frequency] [target] [date] [trend] [bullet] [direction] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sortDir* | Specify the sort direction, ascending or descending. By default, queries sort records in descending order. Use sysparm_sortdir=asc to sort in ascending order. One of: [asc] [desc] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suppressAutoSysField* | True to suppress auto generation of system fields (default: false) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suppressPaginationHeader* | Set this value to true to remove the Link header from the response. The Link header allows you to request additional pages of data when the number of records matching your query exceeds the query limit | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.table* | The default table, can be overridden by header CamelServiceNowTable | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.target* | Set this parameter to true to return only scorecards that have a target. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topLevelOnly* | Gets only those categories whose parent is a catalog. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiVersion* | The ServiceNow REST API version, default latest | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dateFormat* | The date format used for Json serialization/deserialization | "yyyy-MM-dd" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dateTimeFormat* | The date-time format used for Json serialization/deserialization | "yyyy-MM-dd HH:mm:ss" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientPolicy* | To configure http-client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapper* | Sets Jackson's ObjectMapper to use for request/reply | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthorizationPolicy* | To configure proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retrieveTargetRecordOnImport* | Set this parameter to true to retrieve the target record when using import set api. The import set result is then replaced by the target record | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeFormat* | The time format used for Json serialization/deserialization | "HH:mm:ss" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiUrl* | The ServiceNow REST API url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthClientId* | OAuth2 ClientID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthClientSecret* | OAuth2 ClientSecret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthTokenUrl* | OAuth token Url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | ServiceNow account password, MUST be provided | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyUserName* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. See \http://camel.apache.org/camel-configuration-utilities.html | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | ServiceNow user account name, MUST be provided | null | ConfigDef.Importance.HIGH
+| *camel.component.servicenow.apiUrl* | The ServiceNow REST API url | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.configuration* | The ServiceNow default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.instanceName* | The ServiceNow instance name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.oauthClientId* | OAuth2 ClientID | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.oauthClientSecret* | OAuth2 ClientSecret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.oauthTokenUrl* | OAuth token Url | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.password* | ServiceNow account password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyUserName* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.userName* | ServiceNow user account name | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-servlet-kafka-connector/pom.xml b/connectors/camel-servlet-kafka-connector/pom.xml
index 38ac4eb..0d00805 100644
--- a/connectors/camel-servlet-kafka-connector/pom.xml
+++ b/connectors/camel-servlet-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-servlet-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: servlet</name>
diff --git a/connectors/camel-servlet-kafka-connector/src/main/assembly/package.xml b/connectors/camel-servlet-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-servlet-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-servlet-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-servlet-kafka-connector/src/main/docs/camel-servlet-kafka-source-connector.adoc b/connectors/camel-servlet-kafka-connector/src/main/docs/camel-servlet-kafka-source-connector.adoc
new file mode 100644
index 0000000..db05227
--- /dev/null
+++ b/connectors/camel-servlet-kafka-connector/src/main/docs/camel-servlet-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-servlet-kafka-connector-source]]
+= camel-servlet-kafka-connector source configuration
+
+When using camel-servlet-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-servlet-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-servlet source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.contextPath* | The context-path to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.async* | Configure the consumer to work in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.responseBufferSize* | To use a custom buffer size on the javax.servlet.ServletResponse. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servletName* | Name of the servlet to use | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentMultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckContentAvailable* | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileNameExtWhitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.servletName* | Default name of servlet to use. The default name is CamelServlet. | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.attachmentMultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.fileNameExtWhitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.httpRegistry* | To use a custom org.apache.camel.component.servlet.HttpRegistry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.httpConfiguration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sftp-kafka-connector/pom.xml b/connectors/camel-sftp-kafka-connector/pom.xml
index acd96a7..2f0f36e 100644
--- a/connectors/camel-sftp-kafka-connector/pom.xml
+++ b/connectors/camel-sftp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sftp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sftp</name>
diff --git a/connectors/camel-sftp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sftp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sftp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sftp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sftp-kafka-connector/src/main/docs/camel-sftp-kafka-sink-connector.adoc b/connectors/camel-sftp-kafka-connector/src/main/docs/camel-sftp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..16193d0
--- /dev/null
+++ b/connectors/camel-sftp-kafka-connector/src/main/docs/camel-sftp-kafka-sink-connector.adoc
@@ -0,0 +1,84 @@
+// kafka-connector options: START
+[[camel-sftp-kafka-connector-sink]]
+= camel-sftp-kafka-connector sink configuration
+
+When using camel-sftp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sftp sink connector supports 58 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jschLoggingLevel* | The logging level to use for JSCH activity logging. As JSCH is verbose at by default at INFO level the threshold is WARN by default. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=640. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendNoop* | Whether to send a noop command as a pre-write check before uploading files to the FTP server. This is enabled by default as a validation of the connection is still valid, which allows to silently re-connect to be able to upload the file. However if this causes problems, you can turn this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bindAddress* | Specifies the address of the local interface against which the connection should bind. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bulkRequests* | Specifies how many requests may be outstanding at any one time. Increasing this value may slightly improve file transfer speed but will increase memory usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compression* | To use compression. Specify a level from 1 to 10. Important: You must manually add the needed JSCH zlib JAR to the classpath for compression support. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxy* | To use a custom configured com.jcraft.jsch.Proxy. This proxy is used to consume/send messages from the target SFTP host. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverAliveCountMax* | Sets the number of keep-alive messages which may be sent without receiving any messages back from the server. If this threshold is reached while keep-alive messages are being sent, the connection will be disconnected. The default value is one. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverAliveInterval* | Sets the interval (millis) to send a keep-alive message. If zero is specified, any keep-alive message must not be sent. The default interval is zero. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnConnectFailed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ciphers* | Set a comma separated list of ciphers that will be used in order of preference. Possible cipher names are defined by JCraft JSCH. Some examples include: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPair* | Sets a key pair of the public and private key so to that the SFTP endpoint can do public/private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHosts* | Sets the known_hosts from the byte array, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsFile* | Sets the known_hosts file, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsUri* | Sets the known_hosts file (loaded from classpath by default), so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preferredAuthentications* | Set the preferred authentications which SFTP endpoint will used. Some example include:password,publickey. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the private key as byte so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFile* | Set the private key file so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyPassphrase* | Set the private key file passphrase so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyUri* | Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.strictHostKeyChecking* | Sets whether to use strict host key checking. One of: [no] [yes] | "no" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useUserKnownHostsFile* | If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sftp-kafka-connector/src/main/docs/camel-sftp-kafka-source-connector.adoc b/connectors/camel-sftp-kafka-connector/src/main/docs/camel-sftp-kafka-source-connector.adoc
new file mode 100644
index 0000000..8f7f916
--- /dev/null
+++ b/connectors/camel-sftp-kafka-connector/src/main/docs/camel-sftp-kafka-source-connector.adoc
@@ -0,0 +1,137 @@
+// kafka-connector options: START
+[[camel-sftp-kafka-connector-source]]
+= camel-sftp-kafka-connector source configuration
+
+When using camel-sftp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sftp source connector supports 111 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jschLoggingLevel* | The logging level to use for JSCH activity logging. As JSCH is verbose at by default at INFO level the threshold is WARN by default. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. If enabling this option then you must set stepwise=false as both cannot be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.download* | Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFileNotFoundOr PermissionError* | Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useList* | Whether to allow using LIST command when downloading a file. Default is true. In some use cases you may want to download a specific file and are not allowed to use the LIST command, and therefore you can set this option to false. Notice when using this option, then the specific file to download does not include meta-data information such as file size, timestamp, permissions etc, because those information is only possible to retrieve when LIST command is in use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindAddress* | Specifies the address of the local interface against which the connection should bind. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bulkRequests* | Specifies how many requests may be outstanding at any one time. Increasing this value may slightly improve file transfer speed but will increase memory usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compression* | To use compression. Specify a level from 1 to 10. Important: You must manually add the needed JSCH zlib JAR to the classpath for compression support. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxy* | To use a custom configured com.jcraft.jsch.Proxy. This proxy is used to consume/send messages from the target SFTP host. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverAliveCountMax* | Sets the number of keep-alive messages which may be sent without receiving any messages back from the server. If this threshold is reached while keep-alive messages are being sent, the connection will be disconnected. The default value is one. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverAliveInterval* | Sets the interval (millis) to send a keep-alive message. If zero is specified, any keep-alive message must not be sent. The default interval is zero. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnConnect Failed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Async* | Whether the delayed release task should be synchronous or asynchronous. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease AsyncPoolSize* | The number of threads in the scheduled thread pool when using asynchronous release tasks. Using a default of 1 core threads should be sufficient in almost all use-cases, only set this to a higher value if either updating the idempotent repository is slow, or there are a lot of files to process. This option is not in-use if you use a shared thread pool by configuring the readLockIdempotentReleaseExecutorService option. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Delay* | Whether to delay the release task for a period of millis. This can be used to delay the release tasks to expand the window when a file is regarded as read-locked, in an active/active cluster scenario with a shared idempotent repository, to ensure other nodes cannot potentially scan and acquire the same file, due to race-conditions. By expanding the time-window of the release tasks helps prevents these situations. Note delaying is only needed if you have configured readLockRemoveOnCommit to true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease ExecutorService* | To use a custom and shared thread pool for asynchronous release tasks. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ciphers* | Set a comma separated list of ciphers that will be used in order of preference. Possible cipher names are defined by JCraft JSCH. Some examples include: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPair* | Sets a key pair of the public and private key so to that the SFTP endpoint can do public/private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHosts* | Sets the known_hosts from the byte array, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHostsFile* | Sets the known_hosts file, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHostsUri* | Sets the known_hosts file (loaded from classpath by default), so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preferredAuthentications* | Set the preferred authentications which SFTP endpoint will used. Some example include:password,publickey. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the private key as byte so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyFile* | Set the private key file so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyPassphrase* | Set the private key file passphrase so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyUri* | Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.strictHostKeyChecking* | Sets whether to use strict host key checking. One of: [no] [yes] | "no" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useUserKnownHostsFile* | If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sip-kafka-connector/pom.xml b/connectors/camel-sip-kafka-connector/pom.xml
index 521f0bb..38ad568 100644
--- a/connectors/camel-sip-kafka-connector/pom.xml
+++ b/connectors/camel-sip-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sip-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sip</name>
diff --git a/connectors/camel-sip-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sip-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sip-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sip-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sip-kafka-connector/src/main/docs/camel-sip-kafka-sink-connector.adoc b/connectors/camel-sip-kafka-connector/src/main/docs/camel-sip-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4d04247
--- /dev/null
+++ b/connectors/camel-sip-kafka-connector/src/main/docs/camel-sip-kafka-sink-connector.adoc
@@ -0,0 +1,70 @@
+// kafka-connector options: START
+[[camel-sip-kafka-connector-sink]]
+= camel-sip-kafka-connector sink configuration
+
+When using camel-sip-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sip-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sip sink connector supports 44 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sip-kafka-connector/src/main/docs/camel-sip-kafka-source-connector.adoc b/connectors/camel-sip-kafka-connector/src/main/docs/camel-sip-kafka-source-connector.adoc
new file mode 100644
index 0000000..47daf6f
--- /dev/null
+++ b/connectors/camel-sip-kafka-connector/src/main/docs/camel-sip-kafka-source-connector.adoc
@@ -0,0 +1,74 @@
+// kafka-connector options: START
+[[camel-sip-kafka-connector-source]]
+= camel-sip-kafka-connector source configuration
+
+When using camel-sip-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sip-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sip source connector supports 48 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumer* | This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.presenceAgent* | This setting is used to distinguish between a Presence Agent & a consumer. This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sips-kafka-connector/pom.xml b/connectors/camel-sips-kafka-connector/pom.xml
index 0669c6c..6842b4b 100644
--- a/connectors/camel-sips-kafka-connector/pom.xml
+++ b/connectors/camel-sips-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sips-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sips</name>
diff --git a/connectors/camel-sips-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sips-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sips-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sips-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sips-kafka-connector/src/main/docs/camel-sips-kafka-sink-connector.adoc b/connectors/camel-sips-kafka-connector/src/main/docs/camel-sips-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1c20a85
--- /dev/null
+++ b/connectors/camel-sips-kafka-connector/src/main/docs/camel-sips-kafka-sink-connector.adoc
@@ -0,0 +1,70 @@
+// kafka-connector options: START
+[[camel-sips-kafka-connector-sink]]
+= camel-sips-kafka-connector sink configuration
+
+When using camel-sips-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sips-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sips sink connector supports 44 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sips-kafka-connector/src/main/docs/camel-sips-kafka-source-connector.adoc b/connectors/camel-sips-kafka-connector/src/main/docs/camel-sips-kafka-source-connector.adoc
new file mode 100644
index 0000000..a3605bc
--- /dev/null
+++ b/connectors/camel-sips-kafka-connector/src/main/docs/camel-sips-kafka-source-connector.adoc
@@ -0,0 +1,74 @@
+// kafka-connector options: START
+[[camel-sips-kafka-connector-source]]
+= camel-sips-kafka-connector source configuration
+
+When using camel-sips-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sips-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sips source connector supports 48 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumer* | This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.presenceAgent* | This setting is used to distinguish between a Presence Agent & a consumer. This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sjms-batch-kafka-connector/pom.xml b/connectors/camel-sjms-batch-kafka-connector/pom.xml
index 16b81f1..638baa3 100644
--- a/connectors/camel-sjms-batch-kafka-connector/pom.xml
+++ b/connectors/camel-sjms-batch-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sjms-batch-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sjms-batch</name>
diff --git a/connectors/camel-sjms-batch-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sjms-batch-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sjms-batch-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sjms-batch-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sjms-batch-kafka-connector/src/main/docs/camel-sjms-batch-kafka-source-connector.adoc b/connectors/camel-sjms-batch-kafka-connector/src/main/docs/camel-sjms-batch-kafka-source-connector.adoc
new file mode 100644
index 0000000..8600309
--- /dev/null
+++ b/connectors/camel-sjms-batch-kafka-connector/src/main/docs/camel-sjms-batch-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-sjms-batch-kafka-connector-source]]
+= camel-sjms-batch-kafka-connector source configuration
+
+When using camel-sjms-batch-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms-batch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms-batch source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationName* | The destination name. Only queues are supported, names may be prefixed by 'queue:'. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.aggregationStrategy* | The aggregation strategy to use, which merges all the batched messages into a single message | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionInterval* | The completion interval in millis, which causes batches to be completed in a scheduled fixed rate every interval. The batch may be empty if the timeout triggered and there was no messages in the batch. Notice you cannot use both completion timeout and completion interval at the same time, only one can be configured. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionPredicate* | The completion predicate, which causes batches to be completed when the predicate evaluates as true. The predicate can also be configured using the simple language using the string syntax. You may want to set the option eagerCheckCompletion to true to let the predicate match the incoming message, as otherwise it matches the aggregated message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionSize* | The number of messages consumed at which the batch will be completed | 200 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionTimeout* | The timeout in millis from receipt of the first first message when the batch will be completed. The batch may be empty if the timeout triggered and there was no messages in the batch. Notice you cannot use both completion timeout and completion interval at the same time, only one can be configured. | 500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerCount* | The number of JMS sessions to consume from | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckCompletion* | Use eager completion checking which means that the completionPredicate will use the incoming Exchange. As opposed to without eager completion checking the completionPredicate will use the aggregated Exchange. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollDuration* | The duration in milliseconds of each poll for messages. completionTimeOut will be used if it is shorter and a batch has started. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If using completion timeout or interval, then the batch may be empty if the timeout triggered and there was no messages in the batch. If this option is true and the batch is empty then an empty message is added to the batch so an empty message is routed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAliveDelay* | The delay in millis between attempts to re-establish a valid session. If this is a positive value the SjmsBatchConsumer will attempt to create a new session if it sees an IllegalStateException during message consumption. This delay value allows you to pause between attempts to prevent spamming the logs. If this is a negative value (default is -1) then the SjmsBatchConsumer will behave as it always has before - that is it will bail out and the route will shut down if it sees an IllegalStateException. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeoutCheckerExecutor Service* | If using the completionInterval option a background thread is created to trigger the completion interval. Set this option to provide a custom thread pool to be used rather than creating a new thread for every consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.connectionFactory* | A ConnectionFactory is required to enable the SjmsBatchComponent. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sjms-kafka-connector/pom.xml b/connectors/camel-sjms-kafka-connector/pom.xml
index b090ca3..5489bed 100644
--- a/connectors/camel-sjms-kafka-connector/pom.xml
+++ b/connectors/camel-sjms-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sjms-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sjms</name>
diff --git a/connectors/camel-sjms-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sjms-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sjms-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sjms-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sjms-kafka-connector/src/main/docs/camel-sjms-kafka-sink-connector.adoc b/connectors/camel-sjms-kafka-connector/src/main/docs/camel-sjms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cdba121
--- /dev/null
+++ b/connectors/camel-sjms-kafka-connector/src/main/docs/camel-sjms-kafka-sink-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-sjms-kafka-connector-sink]]
+= camel-sjms-kafka-connector sink configuration
+
+When using camel-sjms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms sink connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedReplyTo* | Sets the reply to destination name used for InOut producer endpoints. The type of the reply to destination can be determined by the starting prefix (topic: or queue:) in its name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistent* | Flag used to enable/disable message persistence. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerCount* | Sets the number of producers used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | Flag used to adjust the Time To Live value of produced messages. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefillPool* | Whether to prefill the producer connection pool on startup, or create connections lazy when needed. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.responseTimeOut* | Sets the amount of time we should wait before timing out a InOut response. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sjms-kafka-connector/src/main/docs/camel-sjms-kafka-source-connector.adoc b/connectors/camel-sjms-kafka-connector/src/main/docs/camel-sjms-kafka-source-connector.adoc
new file mode 100644
index 0000000..f409a91
--- /dev/null
+++ b/connectors/camel-sjms-kafka-connector/src/main/docs/camel-sjms-kafka-source-connector.adoc
@@ -0,0 +1,76 @@
+// kafka-connector options: START
+[[camel-sjms-kafka-connector-source]]
+= camel-sjms-kafka-connector source configuration
+
+When using camel-sjms-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms source connector supports 50 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerCount* | Sets the number of consumer listeners used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionId* | Sets the durable subscription Id required for durable topics. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageSelector* | Sets the JMS Message selector syntax. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchCount* | If transacted sets the number of messages to process before committing a transaction. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchTimeout* | Sets timeout (in millis) for batch transactions, the value should be 1000 or higher. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sjms2-kafka-connector/pom.xml b/connectors/camel-sjms2-kafka-connector/pom.xml
index 5797d26..a62bb63 100644
--- a/connectors/camel-sjms2-kafka-connector/pom.xml
+++ b/connectors/camel-sjms2-kafka-connector/pom.xml
@@ -22,11 +22,11 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sjms2-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sjms2</name>
-  <description>Camel Kafka Connector for camel-sjms2</description>
+  <description>Camel Kafka Connector for sjms2</description>
   <dependencies>
     <!-- Kafka -->
     <dependency>
@@ -48,6 +48,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-client</artifactId>
+      <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.camel.kafkaconnector</groupId>
diff --git a/connectors/camel-sjms2-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sjms2-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sjms2-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sjms2-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sjms2-kafka-connector/src/main/docs/camel-sjms2-kafka-sink-connector.adoc b/connectors/camel-sjms2-kafka-connector/src/main/docs/camel-sjms2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..12fcb56
--- /dev/null
+++ b/connectors/camel-sjms2-kafka-connector/src/main/docs/camel-sjms2-kafka-sink-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-sjms2-kafka-connector-sink]]
+= camel-sjms2-kafka-connector sink configuration
+
+When using camel-sjms2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms2 sink connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedReplyTo* | Sets the reply to destination name used for InOut producer endpoints. The type of the reply to destination can be determined by the starting prefix (topic: or queue:) in its name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistent* | Flag used to enable/disable message persistence. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerCount* | Sets the number of producers used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | Flag used to adjust the Time To Live value of produced messages. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefillPool* | Whether to prefill the producer connection pool on startup, or create connections lazy when needed. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.responseTimeOut* | Sets the amount of time we should wait before timing out a InOut response. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sjms2-kafka-connector/src/main/docs/camel-sjms2-kafka-source-connector.adoc b/connectors/camel-sjms2-kafka-connector/src/main/docs/camel-sjms2-kafka-source-connector.adoc
new file mode 100644
index 0000000..6a95307
--- /dev/null
+++ b/connectors/camel-sjms2-kafka-connector/src/main/docs/camel-sjms2-kafka-source-connector.adoc
@@ -0,0 +1,79 @@
+// kafka-connector options: START
+[[camel-sjms2-kafka-connector-source]]
+= camel-sjms2-kafka-connector source configuration
+
+When using camel-sjms2-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms2 source connector supports 53 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerCount* | Sets the number of consumer listeners used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durable* | Sets topic consumer to durable. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionId* | Sets the durable subscription Id required for durable topics. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shared* | Sets the consumer to shared. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionId* | Sets the subscription Id, required for durable or shared topics. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageSelector* | Sets the JMS Message selector syntax. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchCount* | If transacted sets the number of messages to process before committing a transaction. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchTimeout* | Sets timeout (in millis) for batch transactions, the value should be 1000 or higher. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-slack-kafka-connector/pom.xml b/connectors/camel-slack-kafka-connector/pom.xml
index d0e7e66..bc31127 100644
--- a/connectors/camel-slack-kafka-connector/pom.xml
+++ b/connectors/camel-slack-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-slack-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: slack</name>
diff --git a/connectors/camel-slack-kafka-connector/src/main/assembly/package.xml b/connectors/camel-slack-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-slack-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-slack-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-slack-kafka-connector/src/main/docs/camel-slack-kafka-sink-connector.adoc b/connectors/camel-slack-kafka-connector/src/main/docs/camel-slack-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9fcc71b
--- /dev/null
+++ b/connectors/camel-slack-kafka-connector/src/main/docs/camel-slack-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-slack-kafka-connector-sink]]
+= camel-slack-kafka-connector sink configuration
+
+When using camel-slack-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-slack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-slack sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.channel* | The channel name (syntax #name) or slackuser (syntax userName) to send a message directly to an user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.iconEmoji* | Use a Slack emoji as an avatar | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.iconUrl* | The avatar that the component will use when sending message to a channel or user. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | This is the username that the bot will have when sending messages to a channel or user. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.webhookUrl* | The incoming webhook URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.webhookUrl* | The incoming webhook URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-slack-kafka-connector/src/main/docs/camel-slack-kafka-source-connector.adoc b/connectors/camel-slack-kafka-connector/src/main/docs/camel-slack-kafka-source-connector.adoc
new file mode 100644
index 0000000..f064b92
--- /dev/null
+++ b/connectors/camel-slack-kafka-connector/src/main/docs/camel-slack-kafka-source-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-slack-kafka-connector-source]]
+= camel-slack-kafka-connector source configuration
+
+When using camel-slack-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-slack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-slack source connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.channel* | The channel name (syntax #name) or slackuser (syntax userName) to send a message directly to an user. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | The Max Result for the poll | "10" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverUrl* | The Server URL of the Slack instance | "https://slack.com" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.token* | The token to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.webhookUrl* | The incoming webhook URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smpp-kafka-connector/pom.xml b/connectors/camel-smpp-kafka-connector/pom.xml
index 96d1a07..33cf0c2 100644
--- a/connectors/camel-smpp-kafka-connector/pom.xml
+++ b/connectors/camel-smpp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-smpp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: smpp</name>
diff --git a/connectors/camel-smpp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-smpp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-smpp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-smpp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-smpp-kafka-connector/src/main/docs/camel-smpp-kafka-sink-connector.adoc b/connectors/camel-smpp-kafka-connector/src/main/docs/camel-smpp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..692786f
--- /dev/null
+++ b/connectors/camel-smpp-kafka-connector/src/main/docs/camel-smpp-kafka-sink-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-smpp-kafka-connector-sink]]
+= camel-smpp-kafka-connector sink configuration
+
+When using camel-smpp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpp sink connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddr* | Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. | "1717" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrNpi* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrTon* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazySessionCreation* | Sessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started. Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present, Camel will use these data to connect to the SMSC. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.numberingPlanIndicator* | Defines the numeric plan indicator (NPI) to be used in the SME. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priorityFlag* | Allows the originating SME to assign a priority level to the short message. Only for SubmitSm and SubmitMulti. Four Priority Levels are supported: 0: Level 0 (lowest) priority 1: Level 1 priority 2: Level 2 priority 3: Level 3 (highest) priority One of: [0] [1] [2] [3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolId* | The protocol id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.registeredDelivery* | Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: 0: No SMSC delivery receipt requested. 1: SMSC delivery receipt requested where final delivery outcome is success or failure. 2: SMSC delivery receipt requested where the final delivery outcome is delivery failure. One of: [0] [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replaceIfPresentFlag* | Used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service type match the same fields in the new message. The following replace if present flag values are defined: 0: Don't replace 1: Replace One of: [0] [1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceType* | The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined: CMT: Cellular Messaging CPT: Cellular Paging VMN: Voice Mail Notification VMA: Voice Mail Alerting WAP: Wireless Application Protocol USSD: Unstructured Supplementary Services Data One of: [CMT] [CPT] [VMN] [VMA] [WAP] [USSD] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddr* | Defines the address of SME (Short Message Entity) which originated this message. | "1616" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrNpi* | Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrTon* | Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.typeOfNumber* | Defines the type of number (TON) to be used in the SME. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smpp-kafka-connector/src/main/docs/camel-smpp-kafka-source-connector.adoc b/connectors/camel-smpp-kafka-connector/src/main/docs/camel-smpp-kafka-source-connector.adoc
new file mode 100644
index 0000000..76dd940
--- /dev/null
+++ b/connectors/camel-smpp-kafka-connector/src/main/docs/camel-smpp-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-smpp-kafka-connector-source]]
+= camel-smpp-kafka-connector source configuration
+
+When using camel-smpp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpp source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressRange* | You can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smpps-kafka-connector/pom.xml b/connectors/camel-smpps-kafka-connector/pom.xml
index 2f74ebe..0a2e115 100644
--- a/connectors/camel-smpps-kafka-connector/pom.xml
+++ b/connectors/camel-smpps-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-smpps-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: smpps</name>
diff --git a/connectors/camel-smpps-kafka-connector/src/main/assembly/package.xml b/connectors/camel-smpps-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-smpps-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-smpps-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-smpps-kafka-connector/src/main/docs/camel-smpps-kafka-sink-connector.adoc b/connectors/camel-smpps-kafka-connector/src/main/docs/camel-smpps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3dd699a
--- /dev/null
+++ b/connectors/camel-smpps-kafka-connector/src/main/docs/camel-smpps-kafka-sink-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-smpps-kafka-connector-sink]]
+= camel-smpps-kafka-connector sink configuration
+
+When using camel-smpps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpps sink connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddr* | Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. | "1717" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrNpi* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrTon* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazySessionCreation* | Sessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started. Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present, Camel will use these data to connect to the SMSC. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.numberingPlanIndicator* | Defines the numeric plan indicator (NPI) to be used in the SME. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priorityFlag* | Allows the originating SME to assign a priority level to the short message. Only for SubmitSm and SubmitMulti. Four Priority Levels are supported: 0: Level 0 (lowest) priority 1: Level 1 priority 2: Level 2 priority 3: Level 3 (highest) priority One of: [0] [1] [2] [3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolId* | The protocol id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.registeredDelivery* | Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: 0: No SMSC delivery receipt requested. 1: SMSC delivery receipt requested where final delivery outcome is success or failure. 2: SMSC delivery receipt requested where the final delivery outcome is delivery failure. One of: [0] [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replaceIfPresentFlag* | Used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service type match the same fields in the new message. The following replace if present flag values are defined: 0: Don't replace 1: Replace One of: [0] [1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceType* | The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined: CMT: Cellular Messaging CPT: Cellular Paging VMN: Voice Mail Notification VMA: Voice Mail Alerting WAP: Wireless Application Protocol USSD: Unstructured Supplementary Services Data One of: [CMT] [CPT] [VMN] [VMA] [WAP] [USSD] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddr* | Defines the address of SME (Short Message Entity) which originated this message. | "1616" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrNpi* | Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrTon* | Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.typeOfNumber* | Defines the type of number (TON) to be used in the SME. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smpps-kafka-connector/src/main/docs/camel-smpps-kafka-source-connector.adoc b/connectors/camel-smpps-kafka-connector/src/main/docs/camel-smpps-kafka-source-connector.adoc
new file mode 100644
index 0000000..6a3e174
--- /dev/null
+++ b/connectors/camel-smpps-kafka-connector/src/main/docs/camel-smpps-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-smpps-kafka-connector-source]]
+= camel-smpps-kafka-connector source configuration
+
+When using camel-smpps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpps source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressRange* | You can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smtp-kafka-connector/pom.xml b/connectors/camel-smtp-kafka-connector/pom.xml
index 57ac344..cc207b9 100644
--- a/connectors/camel-smtp-kafka-connector/pom.xml
+++ b/connectors/camel-smtp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-smtp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: smtp</name>
diff --git a/connectors/camel-smtp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-smtp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-smtp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-smtp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-smtp-kafka-connector/src/main/docs/camel-smtp-kafka-sink-connector.adoc b/connectors/camel-smtp-kafka-connector/src/main/docs/camel-smtp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c5da0ed
--- /dev/null
+++ b/connectors/camel-smtp-kafka-connector/src/main/docs/camel-smtp-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-smtp-kafka-connector-sink]]
+= camel-smtp-kafka-connector sink configuration
+
+When using camel-smtp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtp sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smtp-kafka-connector/src/main/docs/camel-smtp-kafka-source-connector.adoc b/connectors/camel-smtp-kafka-connector/src/main/docs/camel-smtp-kafka-source-connector.adoc
new file mode 100644
index 0000000..2e0dd5b
--- /dev/null
+++ b/connectors/camel-smtp-kafka-connector/src/main/docs/camel-smtp-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-smtp-kafka-connector-source]]
+= camel-smtp-kafka-connector source configuration
+
+When using camel-smtp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtp source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smtps-kafka-connector/pom.xml b/connectors/camel-smtps-kafka-connector/pom.xml
index d6a06eb..796099c 100644
--- a/connectors/camel-smtps-kafka-connector/pom.xml
+++ b/connectors/camel-smtps-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-smtps-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: smtps</name>
diff --git a/connectors/camel-smtps-kafka-connector/src/main/assembly/package.xml b/connectors/camel-smtps-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-smtps-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-smtps-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-smtps-kafka-connector/src/main/docs/camel-smtps-kafka-sink-connector.adoc b/connectors/camel-smtps-kafka-connector/src/main/docs/camel-smtps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2db97a6
--- /dev/null
+++ b/connectors/camel-smtps-kafka-connector/src/main/docs/camel-smtps-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-smtps-kafka-connector-sink]]
+= camel-smtps-kafka-connector sink configuration
+
+When using camel-smtps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtps sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-smtps-kafka-connector/src/main/docs/camel-smtps-kafka-source-connector.adoc b/connectors/camel-smtps-kafka-connector/src/main/docs/camel-smtps-kafka-source-connector.adoc
new file mode 100644
index 0000000..35124cc
--- /dev/null
+++ b/connectors/camel-smtps-kafka-connector/src/main/docs/camel-smtps-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-smtps-kafka-connector-source]]
+= camel-smtps-kafka-connector source configuration
+
+When using camel-smtps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtps source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-snmp-kafka-connector/pom.xml b/connectors/camel-snmp-kafka-connector/pom.xml
index 7d17ee1..6fbcdf2 100644
--- a/connectors/camel-snmp-kafka-connector/pom.xml
+++ b/connectors/camel-snmp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-snmp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: snmp</name>
diff --git a/connectors/camel-snmp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-snmp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-snmp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-snmp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-snmp-kafka-connector/src/main/docs/camel-snmp-kafka-sink-connector.adoc b/connectors/camel-snmp-kafka-connector/src/main/docs/camel-snmp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d97b62f
--- /dev/null
+++ b/connectors/camel-snmp-kafka-connector/src/main/docs/camel-snmp-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-snmp-kafka-connector-sink]]
+= camel-snmp-kafka-connector sink configuration
+
+When using camel-snmp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-snmp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-snmp sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.oids* | Defines which values you are interested in. Please have a look at the Wikipedia to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids=1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | Here you can select which protocol to use. You can use either udp or tcp. One of: [tcp] [udp] | "udp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retries* | Defines how often a retry is made before canceling the request. | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpCommunity* | Sets the community octet string for the snmp request. | "public" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpContextEngineId* | Sets the context engine ID field of the scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpContextName* | Sets the context name field of this scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpVersion* | Sets the snmp version for the request. The value 0 means SNMPv1, 1 means SNMPv2c, and the value 3 means SNMPv3 One of: [0] [1] [3] | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the timeout value for the request in millis. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.type* | Which operation to perform such as poll, trap, etc. One of: [TRAP] [POLL] [GET_NEXT] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationPassphrase* | The authentication passphrase. If not null, authenticationProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationProtocol* | Authentication protocol to use if security level is set to enable authentication The possible values are: MD5, SHA1 One of: [MD5] [SHA1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privacyPassphrase* | The privacy passphrase. If not null, privacyProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privacyProtocol* | The privacy protocol ID to be associated with this user. If set to null, this user only supports unencrypted messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityLevel* | Sets the security level for this target. The supplied security level must be supported by the security model dependent information associated with the security name set for this target. The value 1 means: No authentication and no encryption. Anyone can create and read messages with this security level The value 2 means: Authentication and no encryption. Only the one with the right authentication key can create messages with this security level, but anyone can read the contents of the message. The value 3 means: Authentication and encryption. Only the one with the right authentication key can create messages with this security level, and only the one with the right encryption/decryption key can read the contents of the message. One of: [1] [2] [3] | 3 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityName* | Sets the security name to be used with this target. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-snmp-kafka-connector/src/main/docs/camel-snmp-kafka-source-connector.adoc b/connectors/camel-snmp-kafka-connector/src/main/docs/camel-snmp-kafka-source-connector.adoc
new file mode 100644
index 0000000..b0f708c
--- /dev/null
+++ b/connectors/camel-snmp-kafka-connector/src/main/docs/camel-snmp-kafka-source-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-snmp-kafka-connector-source]]
+= camel-snmp-kafka-connector source configuration
+
+When using camel-snmp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-snmp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-snmp source connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.oids* | Defines which values you are interested in. Please have a look at the Wikipedia to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids=1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | Here you can select which protocol to use. You can use either udp or tcp. One of: [tcp] [udp] | "udp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retries* | Defines how often a retry is made before canceling the request. | 2 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpCommunity* | Sets the community octet string for the snmp request. | "public" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpContextEngineId* | Sets the context engine ID field of the scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpContextName* | Sets the context name field of this scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpVersion* | Sets the snmp version for the request. The value 0 means SNMPv1, 1 means SNMPv2c, and the value 3 means SNMPv3 One of: [0] [1] [3] | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the timeout value for the request in millis. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Which operation to perform such as poll, trap, etc. One of: [TRAP] [POLL] [GET_NEXT] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Sets update rate in seconds | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treeList* | Sets the flag whether the scoped PDU will be displayed as the list if it has child elements in its tree | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationPassphrase* | The authentication passphrase. If not null, authenticationProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationProtocol* | Authentication protocol to use if security level is set to enable authentication The possible values are: MD5, SHA1 One of: [MD5] [SHA1] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privacyPassphrase* | The privacy passphrase. If not null, privacyProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privacyProtocol* | The privacy protocol ID to be associated with this user. If set to null, this user only supports unencrypted messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityLevel* | Sets the security level for this target. The supplied security level must be supported by the security model dependent information associated with the security name set for this target. The value 1 means: No authentication and no encryption. Anyone can create and read messages with this security level The value 2 means: Authentication and no encryption. Only the one with the right authentication key can create messages with this security level, but anyone can read the contents of the message. The value 3 means: Authentication and encryption. Only the one with the right authentication key can create messages with this security level, and only the one with the right encryption/decryption key can read the contents of the message. One of: [1] [2] [3] | 3 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityName* | Sets the security name to be used with this target. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-solr-kafka-connector/pom.xml b/connectors/camel-solr-kafka-connector/pom.xml
index 03b66e0..2705867 100644
--- a/connectors/camel-solr-kafka-connector/pom.xml
+++ b/connectors/camel-solr-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-solr-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: solr</name>
diff --git a/connectors/camel-solr-kafka-connector/src/main/assembly/package.xml b/connectors/camel-solr-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-solr-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-solr-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-solr-kafka-connector/src/main/docs/camel-solr-kafka-sink-connector.adoc b/connectors/camel-solr-kafka-connector/src/main/docs/camel-solr-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6d52e0d
--- /dev/null
+++ b/connectors/camel-solr-kafka-connector/src/main/docs/camel-solr-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-solr-kafka-connector-sink]]
+= camel-solr-kafka-connector sink configuration
+
+When using camel-solr-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-solr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-solr sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Hostname and port for the solr server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowCompression* | Server side must support gzip or deflate for this to have any effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | connectionTimeout on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultMaxConnectionsPerHost* | maxConnectionsPerHost on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirects* | indicates whether redirects are used to get to the Solr server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetries* | Maximum number of retries to attempt in the event of transient errors | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | maxTotalConnection on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestHandler* | Set the request handler to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingQueueSize* | Set the queue size for the StreamingUpdateSolrServer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingThreadCount* | Set the number of threads for the StreamingUpdateSolrServer | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets password for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets username for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collection* | Set the collection name which the solrCloud server could use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zkHost* | Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.solr.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.solr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-solrcloud-kafka-connector/pom.xml b/connectors/camel-solrcloud-kafka-connector/pom.xml
index 690e12a..ec71095 100644
--- a/connectors/camel-solrcloud-kafka-connector/pom.xml
+++ b/connectors/camel-solrcloud-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-solrcloud-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: solrCloud</name>
diff --git a/connectors/camel-solrcloud-kafka-connector/src/main/assembly/package.xml b/connectors/camel-solrcloud-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-solrcloud-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-solrcloud-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-solrcloud-kafka-connector/src/main/docs/camel-solrCloud-kafka-sink-connector.adoc b/connectors/camel-solrcloud-kafka-connector/src/main/docs/camel-solrCloud-kafka-sink-connector.adoc
new file mode 100644
index 0000000..12132ec
--- /dev/null
+++ b/connectors/camel-solrcloud-kafka-connector/src/main/docs/camel-solrCloud-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-solrCloud-kafka-connector-sink]]
+= camel-solrCloud-kafka-connector sink configuration
+
+When using camel-solrCloud-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-solrCloud-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-solrCloud sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Hostname and port for the solr server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowCompression* | Server side must support gzip or deflate for this to have any effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | connectionTimeout on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultMaxConnectionsPerHost* | maxConnectionsPerHost on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirects* | indicates whether redirects are used to get to the Solr server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetries* | Maximum number of retries to attempt in the event of transient errors | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | maxTotalConnection on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestHandler* | Set the request handler to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingQueueSize* | Set the queue size for the StreamingUpdateSolrServer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingThreadCount* | Set the number of threads for the StreamingUpdateSolrServer | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets password for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets username for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collection* | Set the collection name which the solrCloud server could use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zkHost* | Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.solrcloud.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.solrcloud.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-solrs-kafka-connector/pom.xml b/connectors/camel-solrs-kafka-connector/pom.xml
index f959791..76aabd1 100644
--- a/connectors/camel-solrs-kafka-connector/pom.xml
+++ b/connectors/camel-solrs-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-solrs-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: solrs</name>
diff --git a/connectors/camel-solrs-kafka-connector/src/main/assembly/package.xml b/connectors/camel-solrs-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-solrs-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-solrs-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-solrs-kafka-connector/src/main/docs/camel-solrs-kafka-sink-connector.adoc b/connectors/camel-solrs-kafka-connector/src/main/docs/camel-solrs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3958542
--- /dev/null
+++ b/connectors/camel-solrs-kafka-connector/src/main/docs/camel-solrs-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-solrs-kafka-connector-sink]]
+= camel-solrs-kafka-connector sink configuration
+
+When using camel-solrs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-solrs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-solrs sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Hostname and port for the solr server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowCompression* | Server side must support gzip or deflate for this to have any effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | connectionTimeout on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultMaxConnectionsPerHost* | maxConnectionsPerHost on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirects* | indicates whether redirects are used to get to the Solr server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetries* | Maximum number of retries to attempt in the event of transient errors | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | maxTotalConnection on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestHandler* | Set the request handler to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingQueueSize* | Set the queue size for the StreamingUpdateSolrServer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingThreadCount* | Set the number of threads for the StreamingUpdateSolrServer | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets password for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets username for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collection* | Set the collection name which the solrCloud server could use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zkHost* | Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.solrs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.solrs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-soroush-kafka-connector/pom.xml b/connectors/camel-soroush-kafka-connector/pom.xml
index 9bd47c4..b14bba5 100644
--- a/connectors/camel-soroush-kafka-connector/pom.xml
+++ b/connectors/camel-soroush-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-soroush-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: soroush</name>
diff --git a/connectors/camel-soroush-kafka-connector/src/main/assembly/package.xml b/connectors/camel-soroush-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-soroush-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-soroush-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-soroush-kafka-connector/src/main/docs/camel-soroush-kafka-sink-connector.adoc b/connectors/camel-soroush-kafka-connector/src/main/docs/camel-soroush-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e42a493
--- /dev/null
+++ b/connectors/camel-soroush-kafka-connector/src/main/docs/camel-soroush-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-soroush-kafka-connector-sink]]
+= camel-soroush-kafka-connector sink configuration
+
+When using camel-soroush-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-soroush-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-soroush sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.action* | The action to do. One of: [sendMessage] [getMessage] [uploadFile] [downloadFile] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in ms when connecting to soroush API | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxConnectionRetry* | Maximum connection retry when fail to connect to soroush API, if the quota is reached, MaximumConnectionRetryReachedException is thrown for that message. | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoDownload* | Automatically download SoroushMessage.fileUrl and SoroushMessage.thumbnailUrl if exists for the message and store them in SoroushMessage.file and SoroushMessage.thumbnail field | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoUploadFile* | Automatically upload attachments when a message goes to the sendMessage endpoint and the SoroushMessage.file (SoroushMessage.thumbnail) has been set and SoroushMessage.fileUrl(SoroushMessage.thumbnailUrl) is null | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.downloadThumbnail* | If true, when downloading an attached file, thumbnail will be downloaded if provided in the message. Otherwise, only the file will be downloaded | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceDownload* | Force to download SoroushMessage.fileUrl(SoroushMessage.thumbnailUrl) if exists, even if the SoroushMessage.file(SoroushMessage.thumbnail) was not null in that message | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceUpload* | Force to upload SoroushMessage.file(SoroushMessage.thumbnail) if exists, even if the SoroushMessage.fileUrl(SoroushMessage.thumbnailUrl) is not null in the message | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.backOffStrategy* | The strategy to backoff in case of connection failure. Currently 3 strategies are supported: 1. Exponential (default): It multiply retryWaitingTime by retryExponentialCoefficient after each connection failure. 2. Linear: It increase retryWaitingTime by retryLinearIncrement after each connection failure. 3. Fixed: Always use retryWaitingTime as the time between retries. | "Exponential" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetryWaitingTime* | Maximum amount of time (in millisecond) a thread wait before retrying failed request. | 3600000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectIdleConnectionTimeout* | The timeout in millisecond to reconnect the existing getMessage connection to ensure that the connection is always live and does not dead without notifying the bot. this value should not be changed. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryExponentialCoefficient* | Coefficient to compute back off time when using Exponential Back Off strategy | 2L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryLinearIncrement* | The amount of time (in millisecond) which adds to waiting time when using Linear back off strategy | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryWaitingTime* | Waiting time before retry failed request (Millisecond). If backOffStrategy is not Fixed this is the based value for computing back off waiting time. the first retry is always happen immediately after failure and retryWaitingTime do not apply to the first retry. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authorizationToken* | The authorization token for using the bot. if uri path does not contain authorization token, this token will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.authorizationToken* | The default Soroush authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-soroush-kafka-connector/src/main/docs/camel-soroush-kafka-source-connector.adoc b/connectors/camel-soroush-kafka-connector/src/main/docs/camel-soroush-kafka-source-connector.adoc
new file mode 100644
index 0000000..aee3d07
--- /dev/null
+++ b/connectors/camel-soroush-kafka-connector/src/main/docs/camel-soroush-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-soroush-kafka-connector-source]]
+= camel-soroush-kafka-connector source configuration
+
+When using camel-soroush-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-soroush-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-soroush source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.action* | The action to do. One of: [sendMessage] [getMessage] [uploadFile] [downloadFile] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in ms when connecting to soroush API | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConnectionRetry* | Maximum connection retry when fail to connect to soroush API, if the quota is reached, MaximumConnectionRetryReachedException is thrown for that message. | 4 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of Thread created by consumer in the route. if you use this method for parallelism, it is guaranteed that messages from same user always execute in the same thread and therefore messages from the same user are processed sequentially. Default value notice: using SoroushBotSingleThreadConsumer | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueCapacityPerThread* | Maximum capacity of each queue when concurrentConsumers is greater than 1. if a queue become full, every message that should go to that queue will be dropped. If bridgeErrorHandler is set to true, an exchange with CongestionException is directed to ErrorHandler. You can then processed the error using onException(CongestionException.class) route. Default value notice: infinite capacity | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backOffStrategy* | The strategy to backoff in case of connection failure. Currently 3 strategies are supported: 1. Exponential (default): It multiply retryWaitingTime by retryExponentialCoefficient after each connection failure. 2. Linear: It increase retryWaitingTime by retryLinearIncrement after each connection failure. 3. Fixed: Always use retryWaitingTime as the time between retries. | "Exponential" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxRetryWaitingTime* | Maximum amount of time (in millisecond) a thread wait before retrying failed request. | 3600000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectIdleConnection Timeout* | The timeout in millisecond to reconnect the existing getMessage connection to ensure that the connection is always live and does not dead without notifying the bot. this value should not be changed. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retryExponentialCoefficient* | Coefficient to compute back off time when using Exponential Back Off strategy | 2L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retryLinearIncrement* | The amount of time (in millisecond) which adds to waiting time when using Linear back off strategy | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retryWaitingTime* | Waiting time before retry failed request (Millisecond). If backOffStrategy is not Fixed this is the based value for computing back off waiting time. the first retry is always happen immediately after failure and retryWaitingTime do not apply to the first retry. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authorizationToken* | The authorization token for using the bot. if uri path does not contain authorization token, this token will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.authorizationToken* | The default Soroush authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spark-kafka-connector/pom.xml b/connectors/camel-spark-kafka-connector/pom.xml
index 05efa3f..483b314 100644
--- a/connectors/camel-spark-kafka-connector/pom.xml
+++ b/connectors/camel-spark-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spark-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spark</name>
diff --git a/connectors/camel-spark-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spark-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spark-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spark-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spark-kafka-connector/src/main/docs/camel-spark-kafka-sink-connector.adoc b/connectors/camel-spark-kafka-connector/src/main/docs/camel-spark-kafka-sink-connector.adoc
new file mode 100644
index 0000000..abda8b5
--- /dev/null
+++ b/connectors/camel-spark-kafka-connector/src/main/docs/camel-spark-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-spark-kafka-connector-sink]]
+= camel-spark-kafka-connector sink configuration
+
+When using camel-spark-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spark-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spark sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointType* | Type of the endpoint (rdd, dataframe, hive). One of: [rdd] [dataframe] [hive] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collect* | Indicates if results should be collected or counted. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataFrame* | DataFrame to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataFrameCallback* | Function performing action against an DataFrame. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rdd* | RDD to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rddCallback* | Function performing action against an RDD. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.rdd* | RDD to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.rddCallback* | Function performing action against an RDD. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spark-rest-kafka-connector/pom.xml b/connectors/camel-spark-rest-kafka-connector/pom.xml
index 02782b4..385f665 100644
--- a/connectors/camel-spark-rest-kafka-connector/pom.xml
+++ b/connectors/camel-spark-rest-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spark-rest-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spark-rest</name>
diff --git a/connectors/camel-spark-rest-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spark-rest-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spark-rest-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spark-rest-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spark-rest-kafka-connector/src/main/docs/camel-spark-rest-kafka-source-connector.adoc b/connectors/camel-spark-rest-kafka-connector/src/main/docs/camel-spark-rest-kafka-source-connector.adoc
new file mode 100644
index 0000000..2023252
--- /dev/null
+++ b/connectors/camel-spark-rest-kafka-connector/src/main/docs/camel-spark-rest-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-spark-rest-kafka-connector-source]]
+= camel-spark-rest-kafka-connector source configuration
+
+When using camel-spark-rest-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spark-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spark-rest source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.verb* | get, post, put, patch, delete, head, trace, connect, or options. One of: [get] [post] [put] [patch] [delete] [head] [trace] [connect] [options] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.path* | The content path which support Spark syntax. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accept* | Accept type such as: 'text/xml', or 'application/json'. By default we accept all kinds of types. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Spark HttpRequest#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Spark raw stream. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHeaders* | If this option is enabled, then during binding from Spark to Camel Message then the headers will be mapped as well (eg added as header to the Camel Message as well). You can turn off this option to disable this. The headers can still be accessed from the org.apache.camel.component.sparkrest.SparkMessage message with the method getRequest() that returns the Spark HTTP request instance. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.urlDecodeHeaders* | If this option is enabled, then during binding from Spark to Camel Message then the header values will be URL decoded (eg %20 will be a space character.) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sparkBinding* | To use a custom SparkBinding to map to/from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.ipAddress* | Set the IP address that Spark should listen on. If not called the default address is '0.0.0.0'. | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.port* | Port number. Will by default use 4567 | 4567 | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.maxThreads* | Maximum number of threads in Spark thread-pool (shared globally) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.minThreads* | Minimum number of threads in Spark thread-pool (shared globally) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.sparkBinding* | To use a custom SparkBinding to map to/from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.sparkConfiguration* | To use the shared SparkConfiguration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.timeOutMillis* | Thread idle timeout in millis where threads that has been idle for a longer period will be terminated from the thread pool | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.keystoreFile* | Configures connection to be secure to use the keystore file | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.keystorePassword* | Configures connection to be secure to use the keystore password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.truststoreFile* | Configures connection to be secure to use the truststore file | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.truststorePassword* | Configures connection to be secure to use the truststore password | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-splunk-kafka-connector/pom.xml b/connectors/camel-splunk-kafka-connector/pom.xml
index ac6eda4..00be6b3 100644
--- a/connectors/camel-splunk-kafka-connector/pom.xml
+++ b/connectors/camel-splunk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-splunk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: splunk</name>
diff --git a/connectors/camel-splunk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-splunk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-splunk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-splunk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-splunk-kafka-connector/src/main/docs/camel-splunk-kafka-sink-connector.adoc b/connectors/camel-splunk-kafka-connector/src/main/docs/camel-splunk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..07bb3e1
--- /dev/null
+++ b/connectors/camel-splunk-kafka-connector/src/main/docs/camel-splunk-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-splunk-kafka-connector-sink]]
+= camel-splunk-kafka-connector sink configuration
+
+When using camel-splunk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-splunk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-splunk sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name has no purpose | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.app* | Splunk app | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Timeout in MS when connecting to Splunk server | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Splunk host. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.owner* | Splunk owner | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | Splunk port | 8089 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scheme* | Splunk scheme | "https" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHost* | Override the default Splunk event host field | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.index* | Splunk index to write to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.raw* | Should the payload be inserted raw | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.source* | Splunk source argument | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceType* | Splunk sourcetype argument | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpReceiverPort* | Splunk tcp receiver port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProtocol* | Set the ssl protocol to use One of: [TLSv1.2] [TLSv1.1] [TLSv1] [SSLv3] | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSunHttpsHandler* | Use sun.net.www.protocol.https.Handler Https handler to establish the Splunk Connection. Can be useful when running in application servers to avoid app. server https handling. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.splunkConfigurationFactory* | To use the SplunkConfigurationFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-splunk-kafka-connector/src/main/docs/camel-splunk-kafka-source-connector.adoc b/connectors/camel-splunk-kafka-connector/src/main/docs/camel-splunk-kafka-source-connector.adoc
new file mode 100644
index 0000000..312a546
--- /dev/null
+++ b/connectors/camel-splunk-kafka-connector/src/main/docs/camel-splunk-kafka-source-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-splunk-kafka-connector-source]]
+= camel-splunk-kafka-connector source configuration
+
+When using camel-splunk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-splunk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-splunk source connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name has no purpose | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.app* | Splunk app | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Timeout in MS when connecting to Splunk server | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.host* | Splunk host. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.owner* | Splunk owner | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.port* | Splunk port | 8089 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheme* | Splunk scheme | "https" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | A number that indicates the maximum number of entities to return. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.earliestTime* | Earliest time of the search time window. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initEarliestTime* | Initial start offset of the first search | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latestTime* | Latest time of the search time window. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.savedSearch* | The name of the query saved in Splunk to run | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.search* | The Splunk query to run | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streaming* | Sets streaming mode. Streaming mode sends exchanges as they are received, rather than in a batch. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProtocol* | Set the ssl protocol to use One of: [TLSv1.2] [TLSv1.1] [TLSv1] [SSLv3] | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useSunHttpsHandler* | Use sun.net.www.protocol.https.Handler Https handler to establish the Splunk Connection. Can be useful when running in application servers to avoid app. server https handling. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.splunkConfigurationFactory* | To use the SplunkConfigurationFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-batch-kafka-connector/pom.xml b/connectors/camel-spring-batch-kafka-connector/pom.xml
index 1ea6e32..a2a741c 100644
--- a/connectors/camel-spring-batch-kafka-connector/pom.xml
+++ b/connectors/camel-spring-batch-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spring-batch-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spring-batch</name>
diff --git a/connectors/camel-spring-batch-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spring-batch-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spring-batch-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spring-batch-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spring-batch-kafka-connector/src/main/docs/camel-spring-batch-kafka-sink-connector.adoc b/connectors/camel-spring-batch-kafka-connector/src/main/docs/camel-spring-batch-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3dfb4ce
--- /dev/null
+++ b/connectors/camel-spring-batch-kafka-connector/src/main/docs/camel-spring-batch-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-spring-batch-kafka-connector-sink]]
+= camel-spring-batch-kafka-connector sink configuration
+
+When using camel-spring-batch-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-batch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-batch sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.jobName* | The name of the Spring Batch job located in the registry. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.jobFromHeader* | Explicitly defines if the jobName should be taken from the headers instead of the URI. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobLauncher* | Explicitly specifies a JobLauncher to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobRegistry* | Explicitly specifies a JobRegistry to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.jobLauncher* | Explicitly specifies a JobLauncher to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.jobRegistry* | Explicitly specifies a JobRegistry to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-event-kafka-connector/pom.xml b/connectors/camel-spring-event-kafka-connector/pom.xml
index 8af3555..d4fa33c 100644
--- a/connectors/camel-spring-event-kafka-connector/pom.xml
+++ b/connectors/camel-spring-event-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spring-event-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spring-event</name>
diff --git a/connectors/camel-spring-event-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spring-event-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spring-event-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spring-event-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spring-event-kafka-connector/src/main/docs/camel-spring-event-kafka-sink-connector.adoc b/connectors/camel-spring-event-kafka-connector/src/main/docs/camel-spring-event-kafka-sink-connector.adoc
new file mode 100644
index 0000000..77fcac8
--- /dev/null
+++ b/connectors/camel-spring-event-kafka-connector/src/main/docs/camel-spring-event-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-spring-event-kafka-connector-sink]]
+= camel-spring-event-kafka-connector sink configuration
+
+When using camel-spring-event-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-event-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-event sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-event-kafka-connector/src/main/docs/camel-spring-event-kafka-source-connector.adoc b/connectors/camel-spring-event-kafka-connector/src/main/docs/camel-spring-event-kafka-source-connector.adoc
new file mode 100644
index 0000000..dfa12c8
--- /dev/null
+++ b/connectors/camel-spring-event-kafka-connector/src/main/docs/camel-spring-event-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-spring-event-kafka-connector-source]]
+= camel-spring-event-kafka-connector source configuration
+
+When using camel-spring-event-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-event-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-event source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-integration-kafka-connector/pom.xml b/connectors/camel-spring-integration-kafka-connector/pom.xml
index 6e48cf2..2c6f1ea 100644
--- a/connectors/camel-spring-integration-kafka-connector/pom.xml
+++ b/connectors/camel-spring-integration-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spring-integration-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spring-integration</name>
diff --git a/connectors/camel-spring-integration-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spring-integration-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spring-integration-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spring-integration-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spring-integration-kafka-connector/src/main/docs/camel-spring-integration-kafka-sink-connector.adoc b/connectors/camel-spring-integration-kafka-connector/src/main/docs/camel-spring-integration-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c424e87
--- /dev/null
+++ b/connectors/camel-spring-integration-kafka-connector/src/main/docs/camel-spring-integration-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-spring-integration-kafka-connector-sink]]
+= camel-spring-integration-kafka-connector sink configuration
+
+When using camel-spring-integration-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-integration-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-integration sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.defaultChannel* | The default channel name which is used by the Spring Integration Spring context. It will equal to the inputChannel name for the Spring Integration consumer and the outputChannel name for the Spring Integration provider. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.inOut* | The exchange pattern that the Spring integration endpoint should use. If inOut=true then a reply channel is expected, either from the Spring Integration Message header or configured on the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputChannel* | The Spring integration output channel name that is used to send messages to Spring integration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-integration-kafka-connector/src/main/docs/camel-spring-integration-kafka-source-connector.adoc b/connectors/camel-spring-integration-kafka-connector/src/main/docs/camel-spring-integration-kafka-source-connector.adoc
new file mode 100644
index 0000000..489b308
--- /dev/null
+++ b/connectors/camel-spring-integration-kafka-connector/src/main/docs/camel-spring-integration-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-spring-integration-kafka-connector-source]]
+= camel-spring-integration-kafka-connector source configuration
+
+When using camel-spring-integration-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-integration-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-integration source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.defaultChannel* | The default channel name which is used by the Spring Integration Spring context. It will equal to the inputChannel name for the Spring Integration consumer and the outputChannel name for the Spring Integration provider. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.inOut* | The exchange pattern that the Spring integration endpoint should use. If inOut=true then a reply channel is expected, either from the Spring Integration Message header or configured on the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inputChannel* | The Spring integration input channel name that this endpoint wants to consume from Spring integration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-ldap-kafka-connector/pom.xml b/connectors/camel-spring-ldap-kafka-connector/pom.xml
index 04acd05..5cf91fc 100644
--- a/connectors/camel-spring-ldap-kafka-connector/pom.xml
+++ b/connectors/camel-spring-ldap-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spring-ldap-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spring-ldap</name>
diff --git a/connectors/camel-spring-ldap-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spring-ldap-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spring-ldap-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spring-ldap-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spring-ldap-kafka-connector/src/main/docs/camel-spring-ldap-kafka-sink-connector.adoc b/connectors/camel-spring-ldap-kafka-connector/src/main/docs/camel-spring-ldap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..eb5ce92
--- /dev/null
+++ b/connectors/camel-spring-ldap-kafka-connector/src/main/docs/camel-spring-ldap-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-spring-ldap-kafka-connector-sink]]
+= camel-spring-ldap-kafka-connector sink configuration
+
+When using camel-spring-ldap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-ldap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-ldap sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.templateName* | Name of the Spring LDAP Template bean | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The LDAP operation to be performed. One of: [SEARCH] [BIND] [UNBIND] [AUTHENTICATE] [MODIFY_ATTRIBUTES] [FUNCTION_DRIVEN] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.scope* | The scope of the search operation. One of: [object] [onelevel] [subtree] | "subtree" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ldap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ldap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-redis-kafka-connector/pom.xml b/connectors/camel-spring-redis-kafka-connector/pom.xml
index 8a12d8f..bab612a 100644
--- a/connectors/camel-spring-redis-kafka-connector/pom.xml
+++ b/connectors/camel-spring-redis-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spring-redis-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spring-redis</name>
diff --git a/connectors/camel-spring-redis-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spring-redis-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spring-redis-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spring-redis-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spring-redis-kafka-connector/src/main/docs/camel-spring-redis-kafka-sink-connector.adoc b/connectors/camel-spring-redis-kafka-connector/src/main/docs/camel-spring-redis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fa80500
--- /dev/null
+++ b/connectors/camel-spring-redis-kafka-connector/src/main/docs/camel-spring-redis-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-spring-redis-kafka-connector-sink]]
+= camel-spring-redis-kafka-connector sink configuration
+
+When using camel-spring-redis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-redis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-redis sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The host where Redis server is running. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Redis server port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.channels* | List of topic names or name patterns to subscribe to. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.command* | Default command, which can be overridden by message header. Notice the consumer only supports the following commands: PSUBSCRIBE and SUBSCRIBE One of: [PING] [SET] [GET] [QUIT] [EXISTS] [DEL] [TYPE] [FLUSHDB] [KEYS] [RANDOMKEY] [RENAME] [RENAMENX] [RENAMEX] [DBSIZE] [EXPIRE] [EXPIREAT] [TTL] [SELECT] [MOVE] [FLUSHALL] [GETSET] [MGET] [SETNX] [SETEX] [MSET] [MSETNX] [DECRBY] [DECR] [INCRBY] [INCR] [APPEND] [SUBSTR] [HSET] [HGET] [HSETNX] [HMSET] [HMGET] [HINCRBY] [HEXISTS] [HDEL] [HLEN] [HKEYS] [HVALS] [HGETALL] [RPUSH] [LPUSH] [LLEN] [LRANGE] [LTRIM] [LINDEX] [LSET] [LREM] [LPOP] [RPOP] [RPOPLPUSH] [SADD] [SMEMBERS] [SREM] [SPOP] [SMOVE] [SCARD] [SISMEMBER] [SINTER] [SINTERSTORE] [SUNION] [SUNIONSTORE] [SDIFF] [SDIFFSTORE] [SRANDMEMBER] [ZADD] [ZRANGE] [ZREM] [ZINCRBY] [ZRANK] [ZREVRANK] [ZREVRANGE] [ZCARD] [ZSCORE] [MULTI] [DISCARD] [EXEC] [WATCH] [UNWATCH] [SORT] [BLPOP] [BRPOP] [AUTH] [SUBSCRIBE] [PUBLISH] [UNSUBSCRIBE] [PSUBSCRIBE] [PUNSUBSCRIBE] [ZCOUNT] [ZRANGEBYSCORE] [ZREVRANGEBYSCORE] [ZREMRANGEBYRANK] [ZREMRANGEBYSCORE] [ZUNIONSTORE] [ZINTERSTORE] [SAVE] [BGSAVE] [BGREWRITEAOF] [LASTSAVE] [SHUTDOWN] [INFO] [MONITOR] [SLAVEOF] [CONFIG] [STRLEN] [SYNC] [LPUSHX] [PERSIST] [RPUSHX] [ECHO] [LINSERT] [DEBUG] [BRPOPLPUSH] [SETBIT] [GETBIT] [SETRANGE] [GETRANGE] [PEXPIRE] [PEXPIREAT] [GEOADD] [GEODIST] [GEOHASH] [GEOPOS] [GEORADIUS] [GEORADIUSBYMEMBER] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | Reference to a pre-configured RedisConnectionFactory instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.redisTemplate* | Reference to a pre-configured RedisTemplate instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serializer* | Reference to a pre-configured RedisSerializer instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-redis-kafka-connector/src/main/docs/camel-spring-redis-kafka-source-connector.adoc b/connectors/camel-spring-redis-kafka-connector/src/main/docs/camel-spring-redis-kafka-source-connector.adoc
new file mode 100644
index 0000000..26b9b42
--- /dev/null
+++ b/connectors/camel-spring-redis-kafka-connector/src/main/docs/camel-spring-redis-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-spring-redis-kafka-connector-source]]
+= camel-spring-redis-kafka-connector source configuration
+
+When using camel-spring-redis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-redis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-redis source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The host where Redis server is running. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Redis server port number | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.channels* | List of topic names or name patterns to subscribe to. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.command* | Default command, which can be overridden by message header. Notice the consumer only supports the following commands: PSUBSCRIBE and SUBSCRIBE One of: [PING] [SET] [GET] [QUIT] [EXISTS] [DEL] [TYPE] [FLUSHDB] [KEYS] [RANDOMKEY] [RENAME] [RENAMENX] [RENAMEX] [DBSIZE] [EXPIRE] [EXPIREAT] [TTL] [SELECT] [MOVE] [FLUSHALL] [GETSET] [MGET] [SETNX] [SETEX] [MSET] [MSETNX] [DECRBY] [DECR] [INCRBY] [INCR] [APPEND] [SUBSTR] [HSET] [HGET] [HSETNX] [HMSET] [HMGET] [HINCRBY] [HEXISTS] [HDEL] [HLEN] [HKEYS] [HVALS] [HGETALL] [RPUSH] [LPUSH] [LLEN] [LRANGE] [LTRIM] [LINDEX] [LSET] [LREM] [LPOP] [RPOP] [RPOPLPUSH] [SADD] [SMEMBERS] [SREM] [SPOP] [SMOVE] [SCARD] [SISMEMBER] [SINTER] [SINTERSTORE] [SUNION] [SUNIONSTORE] [SDIFF] [SDIFFSTORE] [SRANDMEMBER] [ZADD] [ZRANGE] [ZREM] [ZINCRBY] [ZRANK] [ZREVRANK] [ZREVRANGE] [ZCARD] [ZSCORE] [MULTI] [DISCARD] [EXEC] [WATCH] [UNWATCH] [SORT] [BLPOP] [BRPOP] [AUTH] [SUBSCRIBE] [PUBLISH] [UNSUBSCRIBE] [PSUBSCRIBE] [PUNSUBSCRIBE] [ZCOUNT] [ZRANGEBYSCORE] [ZREVRANGEBYSCORE] [ZREMRANGEBYRANK] [ZREMRANGEBYSCORE] [ZUNIONSTORE] [ZINTERSTORE] [SAVE] [BGSAVE] [BGREWRITEAOF] [LASTSAVE] [SHUTDOWN] [INFO] [MONITOR] [SLAVEOF] [CONFIG] [STRLEN] [SYNC] [LPUSHX] [PERSIST] [RPUSHX] [ECHO] [LINSERT] [DEBUG] [BRPOPLPUSH] [SETBIT] [GETBIT] [SETRANGE] [GETRANGE] [PEXPIRE] [PEXPIREAT] [GEOADD] [GEODIST] [GEOHASH] [GEOPOS] [GEORADIUS] [GEORADIUSBYMEMBER] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | Reference to a pre-configured RedisConnectionFactory instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.redisTemplate* | Reference to a pre-configured RedisTemplate instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serializer* | Reference to a pre-configured RedisSerializer instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listenerContainer* | Reference to a pre-configured RedisMessageListenerContainer instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-ws-kafka-connector/pom.xml b/connectors/camel-spring-ws-kafka-connector/pom.xml
index fcd96ef..1531256 100644
--- a/connectors/camel-spring-ws-kafka-connector/pom.xml
+++ b/connectors/camel-spring-ws-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-spring-ws-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: spring-ws</name>
diff --git a/connectors/camel-spring-ws-kafka-connector/src/main/assembly/package.xml b/connectors/camel-spring-ws-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-spring-ws-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-spring-ws-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-spring-ws-kafka-connector/src/main/docs/camel-spring-ws-kafka-sink-connector.adoc b/connectors/camel-spring-ws-kafka-connector/src/main/docs/camel-spring-ws-kafka-sink-connector.adoc
new file mode 100644
index 0000000..21beb1b
--- /dev/null
+++ b/connectors/camel-spring-ws-kafka-connector/src/main/docs/camel-spring-ws-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-spring-ws-kafka-connector-sink]]
+= camel-spring-ws-kafka-connector sink configuration
+
+When using camel-spring-ws-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-ws sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.webServiceEndpointUri* | The default Web Service endpoint uri to use for the producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFilter* | Option to provide a custom MessageFilter. For example when you want to process your headers or attachments by your own. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowResponseAttachment Override* | Option to override soap response attachments in in/out exchange with attachments from the actual service layer. If the invoked service appends or rewrites the soap attachments this option when set to true, allows the modified soap attachments to be overwritten in in/out message attachments | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowResponseHeaderOverride* | Option to override soap response header in in/out exchange with header info from the actual service layer. If the invoked service appends or rewrites the soap header this option when set to true, allows the modified soap header to be overwritten in in/out message headers | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.faultAction* | Signifies the value for the faultAction response WS-Addressing Fault Action header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.faultTo* | Signifies the value for the faultAction response WS-Addressing FaultTo header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFactory* | Option to provide a custom WebServiceMessageFactory. For example when you want Apache Axiom to handle web service messages instead of SAAJ. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdStrategy* | Option to provide a custom MessageIdStrategy to control generation of unique message ids. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageSender* | Option to provide a custom WebServiceMessageSender. For example to perform authentication or use alternative transports | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputAction* | Signifies the value for the response WS-Addressing Action header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | Signifies the value for the replyTo response WS-Addressing ReplyTo header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soapAction* | SOAP action to include inside a SOAP request when accessing remote web services | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the socket read timeout (in milliseconds) while invoking a webservice using the producer, see URLConnection.setReadTimeout() and CommonsHttpMessageSender.setReadTimeout(). This option works when using the built-in message sender implementations: CommonsHttpMessageSender and HttpUrlConnectionMessageSender. One of these implementations will be used by default for HTTP based services unless you customize the Spring WS configuration options supplied to the component. If you are using a non-standard sender, it is assumed that you will handle your own timeout configuration. The built-in message sender HttpComponentsMessageSender is considered instead of CommonsHttpMessageSender which has been deprecated, see HttpComponentsMessageSender.setReadTimeout(). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.webServiceTemplate* | Option to provide a custom WebServiceTemplate. This allows for full control over client-side web services handling; like adding a custom interceptor or specifying a fault resolver, message sender or message factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wsAddressingAction* | WS-Addressing 1.0 action header to include when accessing web services. The To header is set to the address of the web service as specified in the endpoint URI (default Spring-WS behavior). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-spring-ws-kafka-connector/src/main/docs/camel-spring-ws-kafka-source-connector.adoc b/connectors/camel-spring-ws-kafka-connector/src/main/docs/camel-spring-ws-kafka-source-connector.adoc
new file mode 100644
index 0000000..d67b71c
--- /dev/null
+++ b/connectors/camel-spring-ws-kafka-connector/src/main/docs/camel-spring-ws-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-spring-ws-kafka-connector-source]]
+= camel-spring-ws-kafka-connector source configuration
+
+When using camel-spring-ws-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-ws source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Endpoint mapping type if endpoint mapping is used. rootqname - Offers the option to map web service requests based on the qualified name of the root element contained in the message. soapaction - Used to map web service requests based on the SOAP action specified in the header of the message. uri - In order to map web service requests that target a specific URI. xpathresult - Used to map web service requests based on the evaluation of an XPath expression against the incoming message. The result of the evaluation should match the XPath result specified in the endpoint URI. beanname - Allows you to reference an org.apache.camel.component.spring.ws.bean.CamelEndpointDispatcher object in order to integrate with existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc One of: [ROOT_QNAME] [ACTION] [TO] [SOAP_ACTION] [XPATHRESULT] [URI] [URI_PATH] [BEANNAME] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.lookupKey* | Endpoint mapping key if endpoint mapping is used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.expression* | The XPath expression to use when option type=xpathresult. Then this option is required to be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageFilter* | Option to provide a custom MessageFilter. For example when you want to process your headers or attachments by your own. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endpointDispatcher* | Spring org.springframework.ws.server.endpoint.MessageEndpoint for dispatching messages received by Spring-WS to a Camel endpoint, to integrate with existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endpointMapping* | Reference to an instance of org.apache.camel.component.spring.ws.bean.CamelEndpointMapping in the Registry/ApplicationContext. Only one bean is required in the registry to serve all Camel/Spring-WS endpoints. This bean is auto-discovered by the MessageDispatcher and used to map requests to Camel endpoints based on characteristics specified on the endpoint (like root QName, SOAP action, etc) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sql-kafka-connector/pom.xml b/connectors/camel-sql-kafka-connector/pom.xml
index a7aa1bf..f2c266c 100644
--- a/connectors/camel-sql-kafka-connector/pom.xml
+++ b/connectors/camel-sql-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sql-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sql</name>
diff --git a/connectors/camel-sql-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sql-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sql-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sql-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sql-kafka-connector/src/main/docs/camel-sql-kafka-sink-connector.adoc b/connectors/camel-sql-kafka-connector/src/main/docs/camel-sql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e9fff55
--- /dev/null
+++ b/connectors/camel-sql-kafka-connector/src/main/docs/camel-sql-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-sql-kafka-connector-sink]]
+= camel-sql-kafka-connector sink configuration
+
+When using camel-sql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sql sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.query* | Sets the SQL query to perform. You can externalize the query by using file: or classpath: as prefix and specify the location of the file. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batch* | Enables or disables batch mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noop* | If set, will ignore the results of the SQL query and use the existing IN message as the OUT message for the continuation of processing | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageBodyForSql* | Whether to use the message body as the SQL and then headers for parameters. If this option is enabled then the SQL in the uri is not used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. This option is default true | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sql-kafka-connector/src/main/docs/camel-sql-kafka-source-connector.adoc b/connectors/camel-sql-kafka-connector/src/main/docs/camel-sql-kafka-source-connector.adoc
new file mode 100644
index 0000000..fa92c69
--- /dev/null
+++ b/connectors/camel-sql-kafka-connector/src/main/docs/camel-sql-kafka-source-connector.adoc
@@ -0,0 +1,75 @@
+// kafka-connector options: START
+[[camel-sql-kafka-connector-source]]
+= camel-sql-kafka-connector source configuration
+
+When using camel-sql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sql source connector supports 49 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.query* | Sets the SQL query to perform. You can externalize the query by using file: or classpath: as prefix and specify the location of the file. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.breakBatchOnConsumeFail* | Sets whether to break batch if onConsume failed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expectedUpdateCount* | Sets an expected update count to validate when using onConsume. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Sets the maximum number of messages to poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsume* | After processing each row then this query can be executed, if the Exchange was processed successfully, for example to mark the row as processed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeBatchComplete* | After processing the entire batch, this query can be executed to bulk update rows etc. The query cannot have parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeFailed* | After processing each row then this query can be executed, if the Exchange failed, for example to mark the row as failed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeEmptyResultSet* | Sets whether empty resultset should be allowed to be sent to the next hop. Defaults to false. So the empty resultset will be filtered out. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Enables or disables transaction. If enabled then if processing an exchange failed then the consumer breaks out processing any further exchanges to cause a rollback eager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIterator* | Sets how resultset should be delivered to route. Indicates delivery as either a list or individual object. defaults to true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processingStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlProcessingStrategy to execute queries when the consumer has processed the rows/batch. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. This option is default true | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-sql-stored-kafka-connector/pom.xml b/connectors/camel-sql-stored-kafka-connector/pom.xml
index 5e50ea2..46d5844 100644
--- a/connectors/camel-sql-stored-kafka-connector/pom.xml
+++ b/connectors/camel-sql-stored-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-sql-stored-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: sql-stored</name>
diff --git a/connectors/camel-sql-stored-kafka-connector/src/main/assembly/package.xml b/connectors/camel-sql-stored-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-sql-stored-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-sql-stored-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-sql-stored-kafka-connector/src/main/docs/camel-sql-stored-kafka-sink-connector.adoc b/connectors/camel-sql-stored-kafka-connector/src/main/docs/camel-sql-stored-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3a6484b
--- /dev/null
+++ b/connectors/camel-sql-stored-kafka-connector/src/main/docs/camel-sql-stored-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-sql-stored-kafka-connector-sink]]
+= camel-sql-stored-kafka-connector sink configuration
+
+When using camel-sql-stored-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sql-stored-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sql-stored sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.template* | Sets the StoredProcedure template to perform | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batch* | Enables or disables batch mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.function* | Whether this call is for a function. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noop* | If set, will ignore the results of the template and use the existing IN message as the OUT message for the continuation of processing | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the template result in a header instead of the message body. By default, outputHeader == null and the template result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the template result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageBodyForTemplate* | Whether to use the message body as the template and then headers for parameters. If this option is enabled then the template in the uri is not used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql-stored.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sql-stored.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql-stored.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ssh-kafka-connector/pom.xml b/connectors/camel-ssh-kafka-connector/pom.xml
index 792f548..c10d439 100644
--- a/connectors/camel-ssh-kafka-connector/pom.xml
+++ b/connectors/camel-ssh-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-ssh-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: ssh</name>
diff --git a/connectors/camel-ssh-kafka-connector/src/main/assembly/package.xml b/connectors/camel-ssh-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-ssh-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-ssh-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-ssh-kafka-connector/src/main/docs/camel-ssh-kafka-sink-connector.adoc b/connectors/camel-ssh-kafka-connector/src/main/docs/camel-ssh-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ed9f4d5
--- /dev/null
+++ b/connectors/camel-ssh-kafka-connector/src/main/docs/camel-ssh-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-ssh-kafka-connector-sink]]
+= camel-ssh-kafka-connector sink configuration
+
+When using camel-ssh-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ssh-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ssh sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Sets the port number for the remote SSH server. | 22 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnUnknownHost* | Specifies whether a connection to an unknown host should fail or not. This value is only checked when the property knownHosts is set. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsResource* | Sets the resource path for a known_hosts file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | "exec" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. From Camel 3.0.0 / 2.25.0, by default Camel will select the first available KeyPair that is loaded. Prior to this, a KeyType of 'ssh-rsa' was enforced by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.pollCommand* | Sets the command string to send to the remote SSH server during every poll cycle. Only works with camel-ssh component being used as a consumer, i.e. from(ssh://...). You may need to end your command with a newline, and that must be URL encoded %0A | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.port* | Sets the port number for the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.configuration* | To use the shared SSH configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. Defaults to ssh-rsa. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-ssh-kafka-connector/src/main/docs/camel-ssh-kafka-source-connector.adoc b/connectors/camel-ssh-kafka-connector/src/main/docs/camel-ssh-kafka-source-connector.adoc
new file mode 100644
index 0000000..c57bc72
--- /dev/null
+++ b/connectors/camel-ssh-kafka-connector/src/main/docs/camel-ssh-kafka-source-connector.adoc
@@ -0,0 +1,78 @@
+// kafka-connector options: START
+[[camel-ssh-kafka-connector-source]]
+= camel-ssh-kafka-connector source configuration
+
+When using camel-ssh-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ssh-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ssh source connector supports 52 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Sets the port number for the remote SSH server. | 22 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.failOnUnknownHost* | Specifies whether a connection to an unknown host should fail or not. This value is only checked when the property knownHosts is set. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHostsResource* | Sets the resource path for a known_hosts file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollCommand* | Sets the command string to send to the remote SSH server during every poll cycle. Only works with camel-ssh component being used as a consumer, i.e. from(ssh://...) You may need to end your command with a newline, and that must be URL encoded %0A | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | "exec" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. From Camel 3.0.0 / 2.25.0, by default Camel will select the first available KeyPair that is loaded. Prior to this, a KeyType of 'ssh-rsa' was enforced by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.pollCommand* | Sets the command string to send to the remote SSH server during every poll cycle. Only works with camel-ssh component being used as a consumer, i.e. from(ssh://...). You may need to end your command with a newline, and that must be URL encoded %0A | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.port* | Sets the port number for the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.configuration* | To use the shared SSH configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. Defaults to ssh-rsa. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stax-kafka-connector/pom.xml b/connectors/camel-stax-kafka-connector/pom.xml
index 595b13c..aab52c4 100644
--- a/connectors/camel-stax-kafka-connector/pom.xml
+++ b/connectors/camel-stax-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-stax-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: stax</name>
diff --git a/connectors/camel-stax-kafka-connector/src/main/assembly/package.xml b/connectors/camel-stax-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-stax-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-stax-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-stax-kafka-connector/src/main/docs/camel-stax-kafka-sink-connector.adoc b/connectors/camel-stax-kafka-connector/src/main/docs/camel-stax-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5512258
--- /dev/null
+++ b/connectors/camel-stax-kafka-connector/src/main/docs/camel-stax-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-stax-kafka-connector-sink]]
+= camel-stax-kafka-connector sink configuration
+
+When using camel-stax-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stax-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stax sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.contentHandlerClass* | The FQN class name for the ContentHandler implementation to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stax.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stax.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stomp-kafka-connector/pom.xml b/connectors/camel-stomp-kafka-connector/pom.xml
index b377930..82a38ca 100644
--- a/connectors/camel-stomp-kafka-connector/pom.xml
+++ b/connectors/camel-stomp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-stomp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: stomp</name>
diff --git a/connectors/camel-stomp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-stomp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-stomp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-stomp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-stomp-kafka-connector/src/main/docs/camel-stomp-kafka-sink-connector.adoc b/connectors/camel-stomp-kafka-connector/src/main/docs/camel-stomp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ab0ad55
--- /dev/null
+++ b/connectors/camel-stomp-kafka-connector/src/main/docs/camel-stomp-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-stomp-kafka-connector-sink]]
+= camel-stomp-kafka-connector sink configuration
+
+When using camel-stomp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stomp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stomp sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destination* | Name of the queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.brokerURL* | The URI of the Stomp broker to connect to | "tcp://localhost:61613" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.customHeaders* | To set custom headers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | The virtual host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.version* | The stomp version (1.1, or 1.2) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.brokerURL* | The URI of the Stomp broker to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.host* | The virtual host | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.configuration* | To use the shared stomp configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stomp-kafka-connector/src/main/docs/camel-stomp-kafka-source-connector.adoc b/connectors/camel-stomp-kafka-connector/src/main/docs/camel-stomp-kafka-source-connector.adoc
new file mode 100644
index 0000000..15124a8
--- /dev/null
+++ b/connectors/camel-stomp-kafka-connector/src/main/docs/camel-stomp-kafka-source-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-stomp-kafka-connector-source]]
+= camel-stomp-kafka-connector source configuration
+
+When using camel-stomp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stomp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stomp source connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destination* | Name of the queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.brokerURL* | The URI of the Stomp broker to connect to | "tcp://localhost:61613" | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.customHeaders* | To set custom headers | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.host* | The virtual host name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.version* | The stomp version (1.1, or 1.2) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.brokerURL* | The URI of the Stomp broker to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.host* | The virtual host | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.configuration* | To use the shared stomp configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stream-kafka-connector/pom.xml b/connectors/camel-stream-kafka-connector/pom.xml
index 92eb5e1..0abf909 100644
--- a/connectors/camel-stream-kafka-connector/pom.xml
+++ b/connectors/camel-stream-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-stream-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: stream</name>
diff --git a/connectors/camel-stream-kafka-connector/src/main/assembly/package.xml b/connectors/camel-stream-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-stream-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-stream-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-stream-kafka-connector/src/main/docs/camel-stream-kafka-sink-connector.adoc b/connectors/camel-stream-kafka-connector/src/main/docs/camel-stream-kafka-sink-connector.adoc
new file mode 100644
index 0000000..32311e5
--- /dev/null
+++ b/connectors/camel-stream-kafka-connector/src/main/docs/camel-stream-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-stream-kafka-connector-sink]]
+= camel-stream-kafka-connector sink configuration
+
+When using camel-stream-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stream sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.kind* | Kind of stream to use such as System.in or System.out. One of: [in] [out] [err] [header] [file] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.encoding* | You can configure the encoding (is a charset name) to use text-based streams (for example, message body is a String object). If not provided, Camel uses the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | When using the stream:file URI format, this option specifies the filename to stream to/from. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCloseCount* | Number of messages to process before closing stream on Producer side. Never close stream by default (only when Producer is stopped). If more messages are sent, the stream is reopened for another autoCloseCount batch. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.closeOnDone* | This option is used in combination with Splitter and streaming to the same file. The idea is to keep the stream open and only close when the Splitter is done, to improve performance. Mind this requires that you only stream to the same file, and not 2 or more files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delay* | Initial delay in milliseconds before producing the stream. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readTimeout* | Sets the read timeout to a specified timeout, in milliseconds. A non-zero value specifies the timeout when reading from Input stream when a connection is established to a resource. If the timeout expires before there is data available for read, a java.net.SocketTimeoutException is raised. A timeout of zero is interpreted as an infinite timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stream-kafka-connector/src/main/docs/camel-stream-kafka-source-connector.adoc b/connectors/camel-stream-kafka-connector/src/main/docs/camel-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..a63b808
--- /dev/null
+++ b/connectors/camel-stream-kafka-connector/src/main/docs/camel-stream-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-stream-kafka-connector-source]]
+= camel-stream-kafka-connector source configuration
+
+When using camel-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stream source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.kind* | Kind of stream to use such as System.in or System.out. One of: [in] [out] [err] [header] [file] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.encoding* | You can configure the encoding (is a charset name) to use text-based streams (for example, message body is a String object). If not provided, Camel uses the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | When using the stream:file URI format, this option specifies the filename to stream to/from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileWatcher* | To use JVM file watcher to listen for file change events to support re-loading files that may be overwritten, somewhat like tail --retry | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupLines* | To group X number of lines in the consumer. For example to group 10 lines and therefore only spit out an Exchange with 10 lines, instead of 1 Exchange per line. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupStrategy* | Allows to use a custom GroupStrategy to control how to group lines. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialPromptDelay* | Initial delay in milliseconds before showing the message prompt. This delay occurs only once. Can be used during system startup to avoid message prompts being written while other logging is done to the system out. | 2000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.promptDelay* | Optional delay in milliseconds before showing the message prompt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.promptMessage* | Message prompt to use when reading from stream:in; for example, you could set this to Enter a command: | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retry* | Will retry opening the stream if it's overwritten, somewhat like tail --retry If reading from files then you should also enable the fileWatcher option, to make it work reliable. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scanStream* | To be used for continuously reading a stream such as the unix tail command. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scanStreamDelay* | Delay in milliseconds between read attempts when using scanStream. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeout* | Sets the read timeout to a specified timeout, in milliseconds. A non-zero value specifies the timeout when reading from Input stream when a connection is established to a resource. If the timeout expires before there is data available for read, a java.net.SocketTimeoutException is raised. A timeout of zero is interpreted as an infinite timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-string-template-kafka-connector/pom.xml b/connectors/camel-string-template-kafka-connector/pom.xml
index 610a8e5..f93bddf 100644
--- a/connectors/camel-string-template-kafka-connector/pom.xml
+++ b/connectors/camel-string-template-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-string-template-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: string-template</name>
diff --git a/connectors/camel-string-template-kafka-connector/src/main/assembly/package.xml b/connectors/camel-string-template-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-string-template-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-string-template-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-string-template-kafka-connector/src/main/docs/camel-string-template-kafka-sink-connector.adoc b/connectors/camel-string-template-kafka-connector/src/main/docs/camel-string-template-kafka-sink-connector.adoc
new file mode 100644
index 0000000..37b140c
--- /dev/null
+++ b/connectors/camel-string-template-kafka-connector/src/main/docs/camel-string-template-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-string-template-kafka-connector-sink]]
+= camel-string-template-kafka-connector sink configuration
+
+When using camel-string-template-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-string-template-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-string-template sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiterStart* | The variable start delimiter | "<" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiterStop* | The variable end delimiter | ">" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.string-template.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.string-template.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stub-kafka-connector/pom.xml b/connectors/camel-stub-kafka-connector/pom.xml
index 564157b..5816838 100644
--- a/connectors/camel-stub-kafka-connector/pom.xml
+++ b/connectors/camel-stub-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-stub-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: stub</name>
diff --git a/connectors/camel-stub-kafka-connector/src/main/assembly/package.xml b/connectors/camel-stub-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-stub-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-stub-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-stub-kafka-connector/src/main/docs/camel-stub-kafka-sink-connector.adoc b/connectors/camel-stub-kafka-connector/src/main/docs/camel-stub-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7d0f18f
--- /dev/null
+++ b/connectors/camel-stub-kafka-connector/src/main/docs/camel-stub-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-stub-kafka-connector-sink]]
+= camel-stub-kafka-connector sink configuration
+
+When using camel-stub-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stub sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardIfNoConsumers* | Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerTimeout* | offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultBlockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultDiscardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultOfferTimeout* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-stub-kafka-connector/src/main/docs/camel-stub-kafka-source-connector.adoc b/connectors/camel-stub-kafka-connector/src/main/docs/camel-stub-kafka-source-connector.adoc
new file mode 100644
index 0000000..b01930e
--- /dev/null
+++ b/connectors/camel-stub-kafka-connector/src/main/docs/camel-stub-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-stub-kafka-connector-source]]
+= camel-stub-kafka-connector source configuration
+
+When using camel-stub-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stub source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limitConcurrentConsumers* | Whether to limit the number of concurrentConsumers to the maximum of 500. By default, an exception will be thrown if an endpoint is configured with a greater number. You can disable that check by turning this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use SEDA for Publish-Subscribe messaging. That is, you can send a message to the SEDA queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when polling. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.purgeWhenStopping* | Whether to purge the task queue when stopping the consumer/route. This allows to stop faster, as any pending messages on the queue is discarded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.concurrentConsumers* | Sets the default number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-telegram-kafka-connector/pom.xml b/connectors/camel-telegram-kafka-connector/pom.xml
index a2a8e5e..11d6be3 100644
--- a/connectors/camel-telegram-kafka-connector/pom.xml
+++ b/connectors/camel-telegram-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-telegram-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: telegram</name>
diff --git a/connectors/camel-telegram-kafka-connector/src/main/assembly/package.xml b/connectors/camel-telegram-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-telegram-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-telegram-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-telegram-kafka-connector/src/main/docs/camel-telegram-kafka-sink-connector.adoc b/connectors/camel-telegram-kafka-connector/src/main/docs/camel-telegram-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fd04a03
--- /dev/null
+++ b/connectors/camel-telegram-kafka-connector/src/main/docs/camel-telegram-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-telegram-kafka-connector-sink]]
+= camel-telegram-kafka-connector sink configuration
+
+When using camel-telegram-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-telegram-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-telegram sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | The endpoint type. Currently, only the 'bots' type is supported. One of: [bots] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.chatId* | The identifier of the chat that will receive the produced messages. Chat ids can be first obtained from incoming messages (eg. when a telegram user starts a conversation with a bot, its client sends automatically a '/start' message containing the chat id). It is an optional parameter, as the chat id can be set dynamically for each outgoing message (using body or headers). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | HTTP proxy host which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | HTTP proxy port which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authorizationToken* | The authorization token for using the bot (ask the BotFather) | null | ConfigDef.Importance.HIGH
+| *camel.component.telegram.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | "https://api.telegram.org" | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.authorizationToken* | The default Telegram authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-telegram-kafka-connector/src/main/docs/camel-telegram-kafka-source-connector.adoc b/connectors/camel-telegram-kafka-connector/src/main/docs/camel-telegram-kafka-source-connector.adoc
new file mode 100644
index 0000000..43eef77
--- /dev/null
+++ b/connectors/camel-telegram-kafka-connector/src/main/docs/camel-telegram-kafka-source-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-telegram-kafka-connector-source]]
+= camel-telegram-kafka-connector source configuration
+
+When using camel-telegram-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-telegram-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-telegram source connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | The endpoint type. Currently, only the 'bots' type is supported. One of: [bots] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | Limit on the number of updates that can be received in a single polling request. | "100" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Timeout in seconds for long polling. Put 0 for short polling or a bigger number for long polling. Long polling produces shorter response time. | "30" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | HTTP proxy host which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | HTTP proxy port which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authorizationToken* | The authorization token for using the bot (ask the BotFather) | null | ConfigDef.Importance.HIGH
+| *camel.component.telegram.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | "https://api.telegram.org" | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.authorizationToken* | The default Telegram authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-thrift-kafka-connector/pom.xml b/connectors/camel-thrift-kafka-connector/pom.xml
index e189a04..5519050 100644
--- a/connectors/camel-thrift-kafka-connector/pom.xml
+++ b/connectors/camel-thrift-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-thrift-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: thrift</name>
diff --git a/connectors/camel-thrift-kafka-connector/src/main/assembly/package.xml b/connectors/camel-thrift-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-thrift-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-thrift-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-thrift-kafka-connector/src/main/docs/camel-thrift-kafka-sink-connector.adoc b/connectors/camel-thrift-kafka-connector/src/main/docs/camel-thrift-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ff675c1
--- /dev/null
+++ b/connectors/camel-thrift-kafka-connector/src/main/docs/camel-thrift-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-thrift-kafka-connector-sink]]
+= camel-thrift-kafka-connector sink configuration
+
+When using camel-thrift-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-thrift-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-thrift sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The Thrift server host name. This is localhost or 0.0.0.0 (if not defined) when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | The Thrift server port | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.service* | Fully qualified service name from the thrift descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.compressionType* | Protocol compression mechanism type One of: [NONE] [ZLIB] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exchangeProtocol* | Exchange protocol serialization type One of: [BINARY] [JSON] [SJSON] [COMPACT] | "BINARY" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | The Thrift invoked method name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.negotiationType* | Security negotiation type One of: [PLAINTEXT] [SSL] [SASL] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslParameters* | Configuration parameters for SSL/TLS security negotiation | null | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.useGlobalSslContext Parameters* | Determine if the thrift component is using global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-thrift-kafka-connector/src/main/docs/camel-thrift-kafka-source-connector.adoc b/connectors/camel-thrift-kafka-connector/src/main/docs/camel-thrift-kafka-source-connector.adoc
new file mode 100644
index 0000000..bc02ae4
--- /dev/null
+++ b/connectors/camel-thrift-kafka-connector/src/main/docs/camel-thrift-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-thrift-kafka-connector-source]]
+= camel-thrift-kafka-connector source configuration
+
+When using camel-thrift-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-thrift-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-thrift source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The Thrift server host name. This is localhost or 0.0.0.0 (if not defined) when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | The Thrift server port | null | ConfigDef.Importance.HIGH
+| *camel.source.path.service* | Fully qualified service name from the thrift descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.compressionType* | Protocol compression mechanism type One of: [NONE] [ZLIB] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangeProtocol* | Exchange protocol serialization type One of: [BINARY] [JSON] [SJSON] [COMPACT] | "BINARY" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientTimeout* | Client timeout for consumers | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPoolSize* | The Thrift server consumer max thread pool size | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Thrift server consumer initial thread pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.negotiationType* | Security negotiation type One of: [PLAINTEXT] [SSL] [SASL] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslParameters* | Configuration parameters for SSL/TLS security negotiation | null | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.useGlobalSslContext Parameters* | Determine if the thrift component is using global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-tika-kafka-connector/pom.xml b/connectors/camel-tika-kafka-connector/pom.xml
index 61aaa3b3a..08dfb05 100644
--- a/connectors/camel-tika-kafka-connector/pom.xml
+++ b/connectors/camel-tika-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-tika-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: tika</name>
diff --git a/connectors/camel-tika-kafka-connector/src/main/assembly/package.xml b/connectors/camel-tika-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-tika-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-tika-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-tika-kafka-connector/src/main/docs/camel-tika-kafka-sink-connector.adoc b/connectors/camel-tika-kafka-connector/src/main/docs/camel-tika-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a21684c
--- /dev/null
+++ b/connectors/camel-tika-kafka-connector/src/main/docs/camel-tika-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-tika-kafka-connector-sink]]
+= camel-tika-kafka-connector sink configuration
+
+When using camel-tika-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-tika-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-tika sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Operation type One of: [parse] [detect] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaConfig* | Tika Config | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaConfigUri* | Tika Config Url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaParseOutputEncoding* | Tika Parse Output Encoding | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaParseOutputFormat* | Tika Output Format. Supported output formats. xml: Returns Parsed Content as XML. html: Returns Parsed Content as HTML. text: Returns Parsed Content as Text. textMain: Uses the boilerpipe library to automatically extract the main content from a web page. One of: [xml] [html] [text] [textMain] | "xml" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.tika.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.tika.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-timer-kafka-connector/pom.xml b/connectors/camel-timer-kafka-connector/pom.xml
index b0cc80f..f8223e3 100644
--- a/connectors/camel-timer-kafka-connector/pom.xml
+++ b/connectors/camel-timer-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-timer-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: timer</name>
diff --git a/connectors/camel-timer-kafka-connector/src/main/assembly/package.xml b/connectors/camel-timer-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-timer-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-timer-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-timer-kafka-connector/src/main/docs/camel-timer-kafka-source-connector.adoc b/connectors/camel-timer-kafka-connector/src/main/docs/camel-timer-kafka-source-connector.adoc
new file mode 100644
index 0000000..5695834
--- /dev/null
+++ b/connectors/camel-timer-kafka-connector/src/main/docs/camel-timer-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-timer-kafka-connector-source]]
+= camel-timer-kafka-connector source configuration
+
+When using camel-timer-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-timer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-timer source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.timerName* | The name of the timer | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Miliseconds before first event is triggered. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fixedRate* | Events take place at approximately regular intervals, separated by the specified period. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeMetadata* | Whether to include metadata in the exchange such as fired time, timer name, timer count etc. This information is default included. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.period* | If greater than 0, generate periodic events every period milliseconds. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the timer will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.daemon* | Specifies whether or not the thread associated with the timer endpoint runs as a daemon. The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pattern* | Allows you to specify a custom Date pattern to use for setting the time option using URI syntax. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.time* | A java.util.Date the first event should be generated. If using the URI, the pattern expected is: yyyy-MM-dd HH:mm:ss or yyyy-MM-dd'T'HH:mm:ss. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timer* | To use a custom Timer | null | ConfigDef.Importance.MEDIUM
+| *camel.component.timer.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.timer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twilio-kafka-connector/pom.xml b/connectors/camel-twilio-kafka-connector/pom.xml
index 2e7bffc..e2713b3 100644
--- a/connectors/camel-twilio-kafka-connector/pom.xml
+++ b/connectors/camel-twilio-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-twilio-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: twilio</name>
diff --git a/connectors/camel-twilio-kafka-connector/src/main/assembly/package.xml b/connectors/camel-twilio-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-twilio-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-twilio-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-twilio-kafka-connector/src/main/docs/camel-twilio-kafka-sink-connector.adoc b/connectors/camel-twilio-kafka-connector/src/main/docs/camel-twilio-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86797bf
--- /dev/null
+++ b/connectors/camel-twilio-kafka-connector/src/main/docs/camel-twilio-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-twilio-kafka-connector-sink]]
+= camel-twilio-kafka-connector sink configuration
+
+When using camel-twilio-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twilio-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twilio sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [ACCOUNT] [ADDRESS] [APPLICATION] [AVAILABLE_PHONE_NUMBER_COUNTRY] [CALL] [CONFERENCE] [CONNECT_APP] [INCOMING_PHONE_NUMBER] [KEY] [MESSAGE] [NEW_KEY] [NEW_SIGNING_KEY] [NOTIFICATION] [OUTGOING_CALLER_ID] [QUEUE] [RECORDING] [SHORT_CODE] [SIGNING_KEY] [TOKEN] [TRANSCRIPTION] [VALIDATION_REQUEST] [ADDRESS_DEPENDENT_PHONE_NUMBER] [AVAILABLE_PHONE_NUMBER_COUNTRY_LOCAL] [AVAILABLE_PHONE_NUMBER_COUNTRY_MOBILE] [AVAILABLE_PHONE_NUMBER_COUNTRY_TOLL_FREE] [CALL_FEEDBACK] [CALL_FEEDBACK_SUMMARY] [CALL_NOTIFICATION] [CALL_RECORDING] [CONFERENCE_PARTICIPANT] [INCOMING_PHONE_NUMBER_LOCAL] [INCOMING_PHONE_NUMBER_MOBILE] [INCOMING_PHONE_NUMBER_TOLL_FREE] [MESSAGE_FEEDBACK] [MESSAGE_MEDIA] [QUEUE_MEMBER] [RECORDING_ADD_ON_RESULT] [RECORDING_TRANSCRIPTION] [RECORDING_ADD_ON_RESULT_PAYLOAD] [SIP_CREDENTIAL_LIST] [SIP_DOMAIN] [SIP_IP_ACCESS_CONTROL_LIST] [SIP_CREDENTIAL_LIST_CREDENTIAL] [SIP_DOMAIN_CREDENTIAL_LIST_MAPPING] [SIP_DOMAIN_IP_ACCESS_CONTROL_LIST_MAPPING] [SIP_IP_ACCESS_CONTROL_LIST_IP_ADDRESS] [USAGE_RECORD] [USAGE_TRIGGER] [USAGE_RECORD_ALL_TIME] [USAGE_RECORD_DAILY] [USAGE_RECORD_LAST_MONTH] [USAGE_RECORD_MONTHLY] [USAGE_RECORD_THIS_MONTH] [USAGE_RECORD_TODAY] [USAGE_RECORD_YEARLY] [USAGE_RECORD_YESTERDAY] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [create] [delete] [fetch] [read] [update] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.restClient* | To use the shared REST client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.accountSid* | The account SID to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.password* | Auth token for the account. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.username* | The account to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twilio-kafka-connector/src/main/docs/camel-twilio-kafka-source-connector.adoc b/connectors/camel-twilio-kafka-connector/src/main/docs/camel-twilio-kafka-source-connector.adoc
new file mode 100644
index 0000000..bab7114
--- /dev/null
+++ b/connectors/camel-twilio-kafka-connector/src/main/docs/camel-twilio-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-twilio-kafka-connector-source]]
+= camel-twilio-kafka-connector source configuration
+
+When using camel-twilio-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twilio-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twilio source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [ACCOUNT] [ADDRESS] [APPLICATION] [AVAILABLE_PHONE_NUMBER_COUNTRY] [CALL] [CONFERENCE] [CONNECT_APP] [INCOMING_PHONE_NUMBER] [KEY] [MESSAGE] [NEW_KEY] [NEW_SIGNING_KEY] [NOTIFICATION] [OUTGOING_CALLER_ID] [QUEUE] [RECORDING] [SHORT_CODE] [SIGNING_KEY] [TOKEN] [TRANSCRIPTION] [VALIDATION_REQUEST] [ADDRESS_DEPENDENT_PHONE_NUMBER] [AVAILABLE_PHONE_NUMBER_COUNTRY_LOCAL] [AVAILABLE_PHONE_NUMBER_COUNTRY_MOBILE] [AVAILABLE_PHONE_NUMBER_COUNTRY_TOLL_FREE] [CALL_FEEDBACK] [CALL_FEEDBACK_SUMMARY] [CALL_NOTIFICATION] [CALL_RECORDING] [CONFERENCE_PARTICIPANT] [INCOMING_PHONE_NUMBER_LOCAL] [INCOMING_PHONE_NUMBER_MOBILE] [INCOMING_PHONE_NUMBER_TOLL_FREE] [MESSAGE_FEEDBACK] [MESSAGE_MEDIA] [QUEUE_MEMBER] [RECORDING_ADD_ON_RESULT] [RECORDING_TRANSCRIPTION] [RECORDING_ADD_ON_RESULT_PAYLOAD] [SIP_CREDENTIAL_LIST] [SIP_DOMAIN] [SIP_IP_ACCESS_CONTROL_LIST] [SIP_CREDENTIAL_LIST_CREDENTIAL] [SIP_DOMAIN_CREDENTIAL_LIST_MAPPING] [SIP_DOMAIN_IP_ACCESS_CONTROL_LIST_MAPPING] [SIP_IP_ACCESS_CONTROL_LIST_IP_ADDRESS] [USAGE_RECORD] [USAGE_TRIGGER] [USAGE_RECORD_ALL_TIME] [USAGE_RECORD_DAILY] [USAGE_RECORD_LAST_MONTH] [USAGE_RECORD_MONTHLY] [USAGE_RECORD_THIS_MONTH] [USAGE_RECORD_TODAY] [USAGE_RECORD_YEARLY] [USAGE_RECORD_YESTERDAY] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [create] [delete] [fetch] [read] [update] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.restClient* | To use the shared REST client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.accountSid* | The account SID to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.password* | Auth token for the account. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.username* | The account to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twitter-directmessage-kafka-connector/pom.xml b/connectors/camel-twitter-directmessage-kafka-connector/pom.xml
index af39cc6..ba66a9b 100644
--- a/connectors/camel-twitter-directmessage-kafka-connector/pom.xml
+++ b/connectors/camel-twitter-directmessage-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-twitter-directmessage-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: twitter-directmessage</name>
diff --git a/connectors/camel-twitter-directmessage-kafka-connector/src/main/assembly/package.xml b/connectors/camel-twitter-directmessage-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-twitter-directmessage-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-twitter-directmessage-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-twitter-directmessage-kafka-connector/src/main/docs/camel-twitter-directmessage-kafka-sink-connector.adoc b/connectors/camel-twitter-directmessage-kafka-connector/src/main/docs/camel-twitter-directmessage-kafka-sink-connector.adoc
new file mode 100644
index 0000000..204642e
--- /dev/null
+++ b/connectors/camel-twitter-directmessage-kafka-connector/src/main/docs/camel-twitter-directmessage-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-twitter-directmessage-kafka-connector-sink]]
+= camel-twitter-directmessage-kafka-connector sink configuration
+
+When using camel-twitter-directmessage-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-directmessage-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-directmessage sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.user* | The user name to send a direct message. This will be ignored for consumer. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Host* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Password* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Port* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy User* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken Secret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumer Secret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twitter-directmessage-kafka-connector/src/main/docs/camel-twitter-directmessage-kafka-source-connector.adoc b/connectors/camel-twitter-directmessage-kafka-connector/src/main/docs/camel-twitter-directmessage-kafka-source-connector.adoc
new file mode 100644
index 0000000..bd465df
--- /dev/null
+++ b/connectors/camel-twitter-directmessage-kafka-connector/src/main/docs/camel-twitter-directmessage-kafka-source-connector.adoc
@@ -0,0 +1,80 @@
+// kafka-connector options: START
+[[camel-twitter-directmessage-kafka-connector-source]]
+= camel-twitter-directmessage-kafka-connector source configuration
+
+When using camel-twitter-directmessage-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-directmessage-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-directmessage source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.user* | The user name to send a direct message. This will be ignored for consumer. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Endpoint type to use. One of: [polling] [direct] | "polling" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distanceMetric* | Used by the geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. One of: [km] [mi] | "km" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedMode* | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latitude* | Used by the geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locations* | Bounding boxes, created by pairs of lat/lons. Can be used for filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.longitude* | Used by the geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.radius* | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | Limiting number of results per page. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterOld* | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lang* | The lang string ISO_639-1 which will be used for searching | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfPages* | The number of pages result which you want camel-twitter to consume. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sinceId* | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | To filter by user ids for filter. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortById* | Sorts by id, so the oldest are first, and newest last. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Host* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Password* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Port* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy User* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken Secret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumer Secret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twitter-search-kafka-connector/pom.xml b/connectors/camel-twitter-search-kafka-connector/pom.xml
index ec6028b..2bc7679 100644
--- a/connectors/camel-twitter-search-kafka-connector/pom.xml
+++ b/connectors/camel-twitter-search-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-twitter-search-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: twitter-search</name>
diff --git a/connectors/camel-twitter-search-kafka-connector/src/main/assembly/package.xml b/connectors/camel-twitter-search-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-twitter-search-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-twitter-search-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-twitter-search-kafka-connector/src/main/docs/camel-twitter-search-kafka-sink-connector.adoc b/connectors/camel-twitter-search-kafka-connector/src/main/docs/camel-twitter-search-kafka-sink-connector.adoc
new file mode 100644
index 0000000..77e7f49
--- /dev/null
+++ b/connectors/camel-twitter-search-kafka-connector/src/main/docs/camel-twitter-search-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-twitter-search-kafka-connector-sink]]
+= camel-twitter-search-kafka-connector sink configuration
+
+When using camel-twitter-search-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-search-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-search sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.keywords* | The search query, use the keywords AND, OR, - and () to narrow the search results. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twitter-search-kafka-connector/src/main/docs/camel-twitter-search-kafka-source-connector.adoc b/connectors/camel-twitter-search-kafka-connector/src/main/docs/camel-twitter-search-kafka-source-connector.adoc
new file mode 100644
index 0000000..fb4826d
--- /dev/null
+++ b/connectors/camel-twitter-search-kafka-connector/src/main/docs/camel-twitter-search-kafka-source-connector.adoc
@@ -0,0 +1,80 @@
+// kafka-connector options: START
+[[camel-twitter-search-kafka-connector-source]]
+= camel-twitter-search-kafka-connector source configuration
+
+When using camel-twitter-search-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-search-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-search source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.keywords* | The search query, use the keywords AND, OR, - and () to narrow the search results. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Endpoint type to use. One of: [polling] [direct] | "polling" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distanceMetric* | Used by the geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. One of: [km] [mi] | "km" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedMode* | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latitude* | Used by the geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locations* | Bounding boxes, created by pairs of lat/lons. Can be used for filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.longitude* | Used by the geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.radius* | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | Limiting number of results per page. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterOld* | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lang* | The lang string ISO_639-1 which will be used for searching | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfPages* | The number of pages result which you want camel-twitter to consume. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sinceId* | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | To filter by user ids for filter. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortById* | Sorts by id, so the oldest are first, and newest last. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twitter-timeline-kafka-connector/pom.xml b/connectors/camel-twitter-timeline-kafka-connector/pom.xml
index cf1d965..b698abc 100644
--- a/connectors/camel-twitter-timeline-kafka-connector/pom.xml
+++ b/connectors/camel-twitter-timeline-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-twitter-timeline-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: twitter-timeline</name>
diff --git a/connectors/camel-twitter-timeline-kafka-connector/src/main/assembly/package.xml b/connectors/camel-twitter-timeline-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-twitter-timeline-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-twitter-timeline-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-twitter-timeline-kafka-connector/src/main/docs/camel-twitter-timeline-kafka-sink-connector.adoc b/connectors/camel-twitter-timeline-kafka-connector/src/main/docs/camel-twitter-timeline-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4ee1395
--- /dev/null
+++ b/connectors/camel-twitter-timeline-kafka-connector/src/main/docs/camel-twitter-timeline-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-twitter-timeline-kafka-connector-sink]]
+= camel-twitter-timeline-kafka-connector sink configuration
+
+When using camel-twitter-timeline-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-timeline-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-timeline sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.timelineType* | The timeline type to produce/consume. One of: [PUBLIC] [HOME] [USER] [MENTIONS] [RETWEETSOFME] [UNKNOWN] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.user* | The username when using timelineType=user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-twitter-timeline-kafka-connector/src/main/docs/camel-twitter-timeline-kafka-source-connector.adoc b/connectors/camel-twitter-timeline-kafka-connector/src/main/docs/camel-twitter-timeline-kafka-source-connector.adoc
new file mode 100644
index 0000000..4cb8915
--- /dev/null
+++ b/connectors/camel-twitter-timeline-kafka-connector/src/main/docs/camel-twitter-timeline-kafka-source-connector.adoc
@@ -0,0 +1,81 @@
+// kafka-connector options: START
+[[camel-twitter-timeline-kafka-connector-source]]
+= camel-twitter-timeline-kafka-connector source configuration
+
+When using camel-twitter-timeline-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-timeline-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-timeline source connector supports 55 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.timelineType* | The timeline type to produce/consume. One of: [PUBLIC] [HOME] [USER] [MENTIONS] [RETWEETSOFME] [UNKNOWN] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.user* | The username when using timelineType=user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Endpoint type to use. One of: [polling] [direct] | "polling" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distanceMetric* | Used by the geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. One of: [km] [mi] | "km" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedMode* | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latitude* | Used by the geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locations* | Bounding boxes, created by pairs of lat/lons. Can be used for filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.longitude* | Used by the geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.radius* | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | Limiting number of results per page. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterOld* | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lang* | The lang string ISO_639-1 which will be used for searching | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfPages* | The number of pages result which you want camel-twitter to consume. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sinceId* | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | To filter by user ids for filter. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortById* | Sorts by id, so the oldest are first, and newest last. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-undertow-kafka-connector/pom.xml b/connectors/camel-undertow-kafka-connector/pom.xml
index e24df2c..846d0d3 100644
--- a/connectors/camel-undertow-kafka-connector/pom.xml
+++ b/connectors/camel-undertow-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-undertow-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: undertow</name>
diff --git a/connectors/camel-undertow-kafka-connector/src/main/assembly/package.xml b/connectors/camel-undertow-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-undertow-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-undertow-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-undertow-kafka-connector/src/main/docs/camel-undertow-kafka-sink-connector.adoc b/connectors/camel-undertow-kafka-connector/src/main/docs/camel-undertow-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ce975a9
--- /dev/null
+++ b/connectors/camel-undertow-kafka-connector/src/main/docs/camel-undertow-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-undertow-kafka-connector-sink]]
+= camel-undertow-kafka-connector sink configuration
+
+When using camel-undertow-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-undertow-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-undertow sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Sets additional channel options. The options that can be used are defined in org.xnio.Options. To configure from endpoint uri, then prefix each option with option., such as option.close-abort=true&option.send-buffer=8192 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, UndertowProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddresses* | Setting to facilitate socket multiplexing | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeout* | Timeout in milliseconds when sending to a websocket channel. The default timeout is 30000 (30 seconds). | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | To send to all websocket subscribers. Can be used to configure on endpoint level, instead of having to use the UndertowConstants.SEND_TO_ALL header on the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-undertow-kafka-connector/src/main/docs/camel-undertow-kafka-source-connector.adoc b/connectors/camel-undertow-kafka-connector/src/main/docs/camel-undertow-kafka-source-connector.adoc
new file mode 100644
index 0000000..c8321ad
--- /dev/null
+++ b/connectors/camel-undertow-kafka-connector/src/main/docs/camel-undertow-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-undertow-kafka-connector-source]]
+= camel-undertow-kafka-connector source configuration
+
+When using camel-undertow-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-undertow-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-undertow source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLog* | Whether or not the consumer should write access log | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handlers* | Specifies a comma-delimited set of io.undertow.server.HttpHandler instances to lookup in your Registry. These handlers are added to the Undertow handler chain (for example, to add security). Important: You can not use different handlers with different Undertow endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireWebSocketChannelEvents* | if true, the consumer will post notifications to the route when a new WebSocket peer connects, disconnects, etc. See UndertowConstants.EVENT_TYPE and EventType. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-validator-kafka-connector/pom.xml b/connectors/camel-validator-kafka-connector/pom.xml
index 97cff14..5453fdc 100644
--- a/connectors/camel-validator-kafka-connector/pom.xml
+++ b/connectors/camel-validator-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-validator-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: validator</name>
diff --git a/connectors/camel-validator-kafka-connector/src/main/assembly/package.xml b/connectors/camel-validator-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-validator-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-validator-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-validator-kafka-connector/src/main/docs/camel-validator-kafka-sink-connector.adoc b/connectors/camel-validator-kafka-connector/src/main/docs/camel-validator-kafka-sink-connector.adoc
new file mode 100644
index 0000000..17d4594
--- /dev/null
+++ b/connectors/camel-validator-kafka-connector/src/main/docs/camel-validator-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-validator-kafka-connector-sink]]
+= camel-validator-kafka-connector sink configuration
+
+When using camel-validator-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-validator-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-validator sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | URL to a local resource on the classpath, or a reference to lookup a bean in the Registry, or a full URL to a remote resource or resource on the file system which contains the XSD to validate against. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.failOnNullBody* | Whether to fail if no body exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullHeader* | Whether to fail if no header exists when validating against a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To validate against a header instead of the message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolver* | To use a custom LSResourceResolver. Do not use together with resourceResolverFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI. The default resource resolver factory resturns a resource resolver which can read files from the class path and file system. Do not use together with resourceResolver. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaFactory* | To use a custom javax.xml.validation.SchemaFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLanguage* | Configures the W3C XML Schema Namespace URI. | "http://www.w3.org/2001/XMLSchema" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSharedSchema* | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.validator.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.validator.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.validator.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-velocity-kafka-connector/pom.xml b/connectors/camel-velocity-kafka-connector/pom.xml
index 4f43d76..af5fce4 100644
--- a/connectors/camel-velocity-kafka-connector/pom.xml
+++ b/connectors/camel-velocity-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-velocity-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: velocity</name>
diff --git a/connectors/camel-velocity-kafka-connector/src/main/assembly/package.xml b/connectors/camel-velocity-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-velocity-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-velocity-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-velocity-kafka-connector/src/main/docs/camel-velocity-kafka-sink-connector.adoc b/connectors/camel-velocity-kafka-connector/src/main/docs/camel-velocity-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1b988fd
--- /dev/null
+++ b/connectors/camel-velocity-kafka-connector/src/main/docs/camel-velocity-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-velocity-kafka-connector-sink]]
+= camel-velocity-kafka-connector sink configuration
+
+When using camel-velocity-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-velocity-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-velocity sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Character encoding of the resource content. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loaderCache* | Enables / disables the velocity resource loader cache which is enabled by default | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propertiesFile* | The URI of the properties file which is used for VelocityEngine initialization. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.velocity.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.velocity.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.velocity.velocityEngine* | To use the VelocityEngine otherwise a new engine is created | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-vertx-kafka-connector/pom.xml b/connectors/camel-vertx-kafka-connector/pom.xml
index d71afa2..b5b3de6 100644
--- a/connectors/camel-vertx-kafka-connector/pom.xml
+++ b/connectors/camel-vertx-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-vertx-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: vertx</name>
diff --git a/connectors/camel-vertx-kafka-connector/src/main/assembly/package.xml b/connectors/camel-vertx-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-vertx-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-vertx-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-vertx-kafka-connector/src/main/docs/camel-vertx-kafka-sink-connector.adoc b/connectors/camel-vertx-kafka-connector/src/main/docs/camel-vertx-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ee56f2c
--- /dev/null
+++ b/connectors/camel-vertx-kafka-connector/src/main/docs/camel-vertx-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-vertx-kafka-connector-sink]]
+= camel-vertx-kafka-connector sink configuration
+
+When using camel-vertx-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vertx-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vertx sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.address* | Sets the event bus address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.pubSub* | Whether to use publish/subscribe instead of point to point when sending to a vertx endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.host* | Hostname for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.port* | Port for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.timeout* | Timeout in seconds to wait for clustered Vertx EventBus to be ready. The default value is 60. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertx* | To use the given vertx EventBus instead of creating a new embedded EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxOptions* | Options to use for creating vertx | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxFactory* | To use a custom VertxFactory implementation | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-vertx-kafka-connector/src/main/docs/camel-vertx-kafka-source-connector.adoc b/connectors/camel-vertx-kafka-connector/src/main/docs/camel-vertx-kafka-source-connector.adoc
new file mode 100644
index 0000000..14d0761
--- /dev/null
+++ b/connectors/camel-vertx-kafka-connector/src/main/docs/camel-vertx-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-vertx-kafka-connector-source]]
+= camel-vertx-kafka-connector source configuration
+
+When using camel-vertx-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vertx-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vertx source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.address* | Sets the event bus address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.pubSub* | Whether to use publish/subscribe instead of point to point when sending to a vertx endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.host* | Hostname for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.port* | Port for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.timeout* | Timeout in seconds to wait for clustered Vertx EventBus to be ready. The default value is 60. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertx* | To use the given vertx EventBus instead of creating a new embedded EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxOptions* | Options to use for creating vertx | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxFactory* | To use a custom VertxFactory implementation | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-vm-kafka-connector/pom.xml b/connectors/camel-vm-kafka-connector/pom.xml
index 7cf7b46..c321854 100644
--- a/connectors/camel-vm-kafka-connector/pom.xml
+++ b/connectors/camel-vm-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-vm-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: vm</name>
diff --git a/connectors/camel-vm-kafka-connector/src/main/assembly/package.xml b/connectors/camel-vm-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-vm-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-vm-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-vm-kafka-connector/src/main/docs/camel-vm-kafka-sink-connector.adoc b/connectors/camel-vm-kafka-connector/src/main/docs/camel-vm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f0354df
--- /dev/null
+++ b/connectors/camel-vm-kafka-connector/src/main/docs/camel-vm-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-vm-kafka-connector-sink]]
+= camel-vm-kafka-connector sink configuration
+
+When using camel-vm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vm sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardIfNoConsumers* | Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerTimeout* | offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultBlockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultDiscardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultOfferTimeout* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-vm-kafka-connector/src/main/docs/camel-vm-kafka-source-connector.adoc b/connectors/camel-vm-kafka-connector/src/main/docs/camel-vm-kafka-source-connector.adoc
new file mode 100644
index 0000000..4497771
--- /dev/null
+++ b/connectors/camel-vm-kafka-connector/src/main/docs/camel-vm-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-vm-kafka-connector-source]]
+= camel-vm-kafka-connector source configuration
+
+When using camel-vm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vm source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limitConcurrentConsumers* | Whether to limit the number of concurrentConsumers to the maximum of 500. By default, an exception will be thrown if an endpoint is configured with a greater number. You can disable that check by turning this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use SEDA for Publish-Subscribe messaging. That is, you can send a message to the SEDA queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when polling. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.purgeWhenStopping* | Whether to purge the task queue when stopping the consumer/route. This allows to stop faster, as any pending messages on the queue is discarded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.concurrentConsumers* | Sets the default number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-weather-kafka-connector/pom.xml b/connectors/camel-weather-kafka-connector/pom.xml
index 0f055d8..57e0bf0 100644
--- a/connectors/camel-weather-kafka-connector/pom.xml
+++ b/connectors/camel-weather-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-weather-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: weather</name>
diff --git a/connectors/camel-weather-kafka-connector/src/main/assembly/package.xml b/connectors/camel-weather-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-weather-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-weather-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-weather-kafka-connector/src/main/docs/camel-weather-kafka-sink-connector.adoc b/connectors/camel-weather-kafka-connector/src/main/docs/camel-weather-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7cc4644
--- /dev/null
+++ b/connectors/camel-weather-kafka-connector/src/main/docs/camel-weather-kafka-sink-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-weather-kafka-connector-sink]]
+= camel-weather-kafka-connector sink configuration
+
+When using camel-weather-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-weather-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-weather sink connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The name value is not used. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.appid* | APPID ID used to authenticate the user connected to the API Server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.headerName* | To store the weather result in this header instead of the message body. This is useable if you want to keep current message body as-is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.language* | Language of the response. One of: [en] [ru] [it] [es] [sp] [uk] [ua] [de] [pt] [ro] [pl] [fi] [nl] [fr] [bg] [sv] [se] [zh_tw] [zh] [zh_cn] [tr] [hr] [ca] | "en" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mode* | The output format of the weather data. One of: [HTML] [JSON] [XML] | "JSON" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.period* | If null, the current weather will be returned, else use values of 5, 7, 14 days. Only the numeric value for the forecast period is actually parsed, so spelling, capitalisation of the time period is up to you (its ignored) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.units* | The units for temperature measurement. One of: [IMPERIAL] [METRIC] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.weatherApi* | The API to be use (current, forecast/3 hour, forecast daily, station) One of: [Current] [Station] [Hourly] [Daily] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpConnectionManager* | To use a custom HttpConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cnt* | Number of results to be found | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ids* | List of id's of city/stations. You can separate multiple ids by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lat* | Latitude of location. You can use lat and lon options instead of location. For boxed queries this is the bottom latitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.location* | If null Camel will try and determine your current location using the geolocation of your ip address, else specify the city,country. For well known city names, Open Weather Map will determine the best fit, but multiple results may be returned. Hence specifying and country as well will return more accurate data. If you specify current as the location then the component will try to get the current latitude and longitude and use that to get the weather details. You can use lat and lon options instead of location. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lon* | Longitude of location. You can use lat and lon options instead of location. For boxed queries this is the left longtitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rightLon* | For boxed queries this is the right longtitude. Needs to be used in combination with topLat and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topLat* | For boxed queries this is the top latitude. Needs to be used in combination with rightLon and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zip* | Zip-code, e.g. 94040,us | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zoom* | For boxed queries this is the zoom. Needs to be used in combination with rightLon and topLat. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Domain for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Optional host for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Authentication method for proxy, either as Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.HIGH
+| *camel.component.weather.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-weather-kafka-connector/src/main/docs/camel-weather-kafka-source-connector.adoc b/connectors/camel-weather-kafka-connector/src/main/docs/camel-weather-kafka-source-connector.adoc
new file mode 100644
index 0000000..1f7177c
--- /dev/null
+++ b/connectors/camel-weather-kafka-connector/src/main/docs/camel-weather-kafka-source-connector.adoc
@@ -0,0 +1,78 @@
+// kafka-connector options: START
+[[camel-weather-kafka-connector-source]]
+= camel-weather-kafka-connector source configuration
+
+When using camel-weather-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-weather-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-weather source connector supports 52 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | The name value is not used. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.appid* | APPID ID used to authenticate the user connected to the API Server | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.headerName* | To store the weather result in this header instead of the message body. This is useable if you want to keep current message body as-is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.language* | Language of the response. One of: [en] [ru] [it] [es] [sp] [uk] [ua] [de] [pt] [ro] [pl] [fi] [nl] [fr] [bg] [sv] [se] [zh_tw] [zh] [zh_cn] [tr] [hr] [ca] | "en" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mode* | The output format of the weather data. One of: [HTML] [JSON] [XML] | "JSON" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.period* | If null, the current weather will be returned, else use values of 5, 7, 14 days. Only the numeric value for the forecast period is actually parsed, so spelling, capitalisation of the time period is up to you (its ignored) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.units* | The units for temperature measurement. One of: [IMPERIAL] [METRIC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.weatherApi* | The API to be use (current, forecast/3 hour, forecast daily, station) One of: [Current] [Station] [Hourly] [Daily] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpConnectionManager* | To use a custom HttpConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cnt* | Number of results to be found | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ids* | List of id's of city/stations. You can separate multiple ids by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lat* | Latitude of location. You can use lat and lon options instead of location. For boxed queries this is the bottom latitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.location* | If null Camel will try and determine your current location using the geolocation of your ip address, else specify the city,country. For well known city names, Open Weather Map will determine the best fit, but multiple results may be returned. Hence specifying and country as well will return more accurate data. If you specify current as the location then the component will try to get the current latitude and longitude and use that to get the weather details. You can use lat and lon options instead of location. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lon* | Longitude of location. You can use lat and lon options instead of location. For boxed queries this is the left longtitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rightLon* | For boxed queries this is the right longtitude. Needs to be used in combination with topLat and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topLat* | For boxed queries this is the top latitude. Needs to be used in combination with rightLon and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.zip* | Zip-code, e.g. 94040,us | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.zoom* | For boxed queries this is the zoom. Needs to be used in combination with rightLon and topLat. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthDomain* | Domain for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthHost* | Optional host for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthMethod* | Authentication method for proxy, either as Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthUsername* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.HIGH
+| *camel.component.weather.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-web3j-kafka-connector/pom.xml b/connectors/camel-web3j-kafka-connector/pom.xml
index 024408d..33afac8 100644
--- a/connectors/camel-web3j-kafka-connector/pom.xml
+++ b/connectors/camel-web3j-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-web3j-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: web3j</name>
diff --git a/connectors/camel-web3j-kafka-connector/src/main/assembly/package.xml b/connectors/camel-web3j-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-web3j-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-web3j-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-web3j-kafka-connector/src/main/docs/camel-web3j-kafka-sink-connector.adoc b/connectors/camel-web3j-kafka-connector/src/main/docs/camel-web3j-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bc2e996
--- /dev/null
+++ b/connectors/camel-web3j-kafka-connector/src/main/docs/camel-web3j-kafka-sink-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-web3j-kafka-connector-sink]]
+= camel-web3j-kafka-connector sink configuration
+
+When using camel-web3j-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-web3j-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-web3j sink connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.nodeAddress* | Sets the node address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.addresses* | Contract address or a list of addresses. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromAddress* | The address the transaction is send from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fullTransactionObjects* | If true it returns the full transaction objects, if false only the hashes of the transactions. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gasLimit* | The maximum gas allowed in this block. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateFor* | A transaction privateFor nodes with public keys in a Quorum network | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.quorumAPI* | If true, this will support Quorum API. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toAddress* | The address the transaction is directed to. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topics* | Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.web3j* | The preconfigured Web3j object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.address* | Contract address. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.atBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockHash* | Hash of the block where this transaction was in. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | A random hexadecimal(32 bytes) ID identifying the client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.data* | The compiled code of a contract OR the hash of the invoked method signature and encoded parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseName* | The local database name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterId* | The filter id to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gasPrice* | Gas price used for each paid gas. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hashrate* | A hexadecimal string representation (32 bytes) of the hash rate. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerPowHash* | The header's pow-hash (256 bits) used for submitting a proof-of-work solution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.index* | The transactions/uncle index position in the block. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyName* | The key name in the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mixDigest* | The mix digest (256 bits) used for submitting a proof-of-work solution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nonce* | The nonce found (64 bits) used for submitting a proof-of-work solution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to use. | "transaction" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.position* | The transaction index position withing a block. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | The priority of a whisper message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sha3HashOfDataToSign* | Message to sign by calculating an Ethereum specific signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signedTransactionData* | The signed transaction data for a new message call transaction or a contract creation for signed transactions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceCode* | The source code to compile. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionHash* | The information about a transaction requested by transaction hash. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The time to live in seconds of a whisper message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | The value sent within a transaction. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-web3j-kafka-connector/src/main/docs/camel-web3j-kafka-source-connector.adoc b/connectors/camel-web3j-kafka-connector/src/main/docs/camel-web3j-kafka-source-connector.adoc
new file mode 100644
index 0000000..860fcd6
--- /dev/null
+++ b/connectors/camel-web3j-kafka-connector/src/main/docs/camel-web3j-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-web3j-kafka-connector-source]]
+= camel-web3j-kafka-connector source configuration
+
+When using camel-web3j-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-web3j-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-web3j source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.nodeAddress* | Sets the node address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.addresses* | Contract address or a list of addresses. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromAddress* | The address the transaction is send from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fullTransactionObjects* | If true it returns the full transaction objects, if false only the hashes of the transactions. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gasLimit* | The maximum gas allowed in this block. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateFor* | A transaction privateFor nodes with public keys in a Quorum network | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.quorumAPI* | If true, this will support Quorum API. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toAddress* | The address the transaction is directed to. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topics* | Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.web3j* | The preconfigured Web3j object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-webhook-kafka-connector/pom.xml b/connectors/camel-webhook-kafka-connector/pom.xml
index fbf66ec..f00f859 100644
--- a/connectors/camel-webhook-kafka-connector/pom.xml
+++ b/connectors/camel-webhook-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-webhook-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: webhook</name>
diff --git a/connectors/camel-webhook-kafka-connector/src/main/assembly/package.xml b/connectors/camel-webhook-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-webhook-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-webhook-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-webhook-kafka-connector/src/main/docs/camel-webhook-kafka-source-connector.adoc b/connectors/camel-webhook-kafka-connector/src/main/docs/camel-webhook-kafka-source-connector.adoc
new file mode 100644
index 0000000..f7e0a1d
--- /dev/null
+++ b/connectors/camel-webhook-kafka-connector/src/main/docs/camel-webhook-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-webhook-kafka-connector-source]]
+= camel-webhook-kafka-connector source configuration
+
+When using camel-webhook-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-webhook-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-webhook source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.endpointUri* | The delegate uri. Must belong to a component that supports webhooks. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookAutoRegister* | Automatically register the webhook at startup and unregister it on shutdown. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookBasePath* | The first (base) path element where the webhook will be exposed. It's a good practice to set it to a random string, so that it cannot be guessed by unauthorized parties. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookComponentName* | The Camel Rest component to use for the REST transport, such as netty-http. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookExternalUrl* | The URL of the current service as seen by the webhook provider | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookPath* | The path where the webhook endpoint will be exposed (relative to basePath, if any) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.webhook.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.webhook.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.webhook.configuration* | Set the default configuration for the webhook meta-component. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-websocket-jsr356-kafka-connector/pom.xml b/connectors/camel-websocket-jsr356-kafka-connector/pom.xml
index a905811..49fddcb 100644
--- a/connectors/camel-websocket-jsr356-kafka-connector/pom.xml
+++ b/connectors/camel-websocket-jsr356-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-websocket-jsr356-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: websocket-jsr356</name>
diff --git a/connectors/camel-websocket-jsr356-kafka-connector/src/main/assembly/package.xml b/connectors/camel-websocket-jsr356-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-websocket-jsr356-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-websocket-jsr356-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-websocket-jsr356-kafka-connector/src/main/docs/camel-websocket-jsr356-kafka-sink-connector.adoc b/connectors/camel-websocket-jsr356-kafka-connector/src/main/docs/camel-websocket-jsr356-kafka-sink-connector.adoc
new file mode 100644
index 0000000..05b3c2b
--- /dev/null
+++ b/connectors/camel-websocket-jsr356-kafka-connector/src/main/docs/camel-websocket-jsr356-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-websocket-jsr356-kafka-connector-sink]]
+= camel-websocket-jsr356-kafka-connector sink configuration
+
+When using camel-websocket-jsr356-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-jsr356-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket-jsr356 sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | If a schemeless URI path is provided, a ServerEndpoint is deployed under that path. Else if the URI is prefixed with the 'ws://' scheme, then a connection is established to the corresponding server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionCount* | Used when the endpoint is in client mode to populate a pool of sessions | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.serverEndpoint DeploymentStrategy* | To enable customization of how a WebSocket ServerEndpoint is configured and deployed. By default DefaultServerEndpointDeploymentStrategy is used. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-websocket-jsr356-kafka-connector/src/main/docs/camel-websocket-jsr356-kafka-source-connector.adoc b/connectors/camel-websocket-jsr356-kafka-connector/src/main/docs/camel-websocket-jsr356-kafka-source-connector.adoc
new file mode 100644
index 0000000..fbbbbd6
--- /dev/null
+++ b/connectors/camel-websocket-jsr356-kafka-connector/src/main/docs/camel-websocket-jsr356-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-websocket-jsr356-kafka-connector-source]]
+= camel-websocket-jsr356-kafka-connector source configuration
+
+When using camel-websocket-jsr356-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-jsr356-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket-jsr356 source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | If a schemeless URI path is provided, a ServerEndpoint is deployed under that path. Else if the URI is prefixed with the 'ws://' scheme, then a connection is established to the corresponding server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionCount* | Used when the endpoint is in client mode to populate a pool of sessions | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.serverEndpoint DeploymentStrategy* | To enable customization of how a WebSocket ServerEndpoint is configured and deployed. By default DefaultServerEndpointDeploymentStrategy is used. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-websocket-kafka-connector/pom.xml b/connectors/camel-websocket-kafka-connector/pom.xml
index abec4cc..dcc029d 100644
--- a/connectors/camel-websocket-kafka-connector/pom.xml
+++ b/connectors/camel-websocket-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-websocket-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: websocket</name>
diff --git a/connectors/camel-websocket-kafka-connector/src/main/assembly/package.xml b/connectors/camel-websocket-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-websocket-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-websocket-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-websocket-kafka-connector/src/main/docs/camel-websocket-kafka-sink-connector.adoc b/connectors/camel-websocket-kafka-connector/src/main/docs/camel-websocket-kafka-sink-connector.adoc
new file mode 100644
index 0000000..eead442
--- /dev/null
+++ b/connectors/camel-websocket-kafka-connector/src/main/docs/camel-websocket-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-websocket-kafka-connector-sink]]
+= camel-websocket-kafka-connector sink configuration
+
+When using camel-websocket-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The hostname. The default value is 0.0.0.0. Setting this option on the component will use the component configured value as default. | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | The port number. The default value is 9292. Setting this option on the component will use the component configured value as default. | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.resourceUri* | Name of the websocket channel to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.maxBinaryMessageSize* | Can be used to set the size in bytes that the websocket created by the websocketServlet may be accept before closing. (Default is -1 - or unlimited) | "-1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeout* | Timeout in millis when sending to a websocket channel. The default timeout is 30000 (30 seconds). | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | To send to all websocket subscribers. Can be used to configure on endpoint level, instead of having to use the WebsocketConstants.SEND_TO_ALL header on the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Set the buffer size of the websocketServlet, which is also the max frame byte size (default 8192) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxIdleTime* | Set the time in ms that the websocket created by the websocketServlet may be idle before closing. (default is 300000) | "300000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTextMessageSize* | Can be used to set the size in characters that the websocket created by the websocketServlet may be accept before closing. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.minVersion* | Can be used to set the minimum protocol version accepted for the websocketServlet. (Default 13 - the RFC6455 version) | "13" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowedOrigins* | The CORS allowed origins. Use to allow all. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.crossOriginFilterOn* | Whether to enable CORS | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterPath* | Context path for filtering CORS | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.host* | The hostname. The default value is 0.0.0.0 | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.port* | The port number. The default value is 9292 | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.socketFactory* | To configure a map which contains custom WebSocketFactory for sub protocols. The key in the map is the sub protocol. The default key is reserved for the default implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.maxThreads* | To set a value for maximum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for maxThreads is 1 2 noCores. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.minThreads* | To set a value for minimum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for minThreads is 1. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.threadPool* | To use a custom thread pool for the server. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-websocket-kafka-connector/src/main/docs/camel-websocket-kafka-source-connector.adoc b/connectors/camel-websocket-kafka-connector/src/main/docs/camel-websocket-kafka-source-connector.adoc
new file mode 100644
index 0000000..6a6a505
--- /dev/null
+++ b/connectors/camel-websocket-kafka-connector/src/main/docs/camel-websocket-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-websocket-kafka-connector-source]]
+= camel-websocket-kafka-connector source configuration
+
+When using camel-websocket-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The hostname. The default value is 0.0.0.0. Setting this option on the component will use the component configured value as default. | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | The port number. The default value is 9292. Setting this option on the component will use the component configured value as default. | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.resourceUri* | Name of the websocket channel to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.maxBinaryMessageSize* | Can be used to set the size in bytes that the websocket created by the websocketServlet may be accept before closing. (Default is -1 - or unlimited) | "-1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionSupport* | Whether to enable session support which enables HttpSession for each http request. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.staticResources* | Set a resource path for static resources (such as .html files etc). The resources can be loaded from classpath, if you prefix with classpath:, otherwise the resources is loaded from file system or from JAR files. For example to load from root classpath use classpath:., or classpath:WEB-INF/static If not configured (eg null) then no static resource is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Set the buffer size of the websocketServlet, which is also the max frame byte size (default 8192) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxIdleTime* | Set the time in ms that the websocket created by the websocketServlet may be idle before closing. (default is 300000) | "300000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxTextMessageSize* | Can be used to set the size in characters that the websocket created by the websocketServlet may be accept before closing. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minVersion* | Can be used to set the minimum protocol version accepted for the websocketServlet. (Default 13 - the RFC6455 version) | "13" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowedOrigins* | The CORS allowed origins. Use to allow all. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.crossOriginFilterOn* | Whether to enable CORS | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterPath* | Context path for filtering CORS | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.host* | The hostname. The default value is 0.0.0.0 | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.port* | The port number. The default value is 9292 | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.socketFactory* | To configure a map which contains custom WebSocketFactory for sub protocols. The key in the map is the sub protocol. The default key is reserved for the default implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.staticResources* | Set a resource path for static resources (such as .html files etc). The resources can be loaded from classpath, if you prefix with classpath:, otherwise the resources is loaded from file system or from JAR files. For example to load from root classpath use classpath:., or classpath:WEB-INF/static If not configured (eg null) then no static resource is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.maxThreads* | To set a value for maximum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for maxThreads is 1 2 noCores. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.minThreads* | To set a value for minimum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for minThreads is 1. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.threadPool* | To use a custom thread pool for the server. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-weka-kafka-connector/pom.xml b/connectors/camel-weka-kafka-connector/pom.xml
index 883e666..57fbedf 100644
--- a/connectors/camel-weka-kafka-connector/pom.xml
+++ b/connectors/camel-weka-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-weka-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: weka</name>
diff --git a/connectors/camel-weka-kafka-connector/src/main/assembly/package.xml b/connectors/camel-weka-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-weka-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-weka-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-weka-kafka-connector/src/main/docs/camel-weka-kafka-sink-connector.adoc b/connectors/camel-weka-kafka-connector/src/main/docs/camel-weka-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f9a1a50
--- /dev/null
+++ b/connectors/camel-weka-kafka-connector/src/main/docs/camel-weka-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-weka-kafka-connector-sink]]
+= camel-weka-kafka-connector sink configuration
+
+When using camel-weka-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-weka-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-weka sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.command* | The command to use. One of: [filter] [model] [read] [write] [push] [pop] [version] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apply* | The filter spec (i.e. Name Options) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.build* | The classifier spec (i.e. Name Options) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dsname* | The named dataset to train the classifier with | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.folds* | Number of folds to use for cross-validation | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loadFrom* | Path to load the model from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saveTo* | Path to save the model to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.seed* | An optional seed for the randomizer | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xval* | Flag on whether to use cross-validation with the current dataset | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.path* | An in/out path for the read/write commands | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weka.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.weka.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-wordpress-kafka-connector/pom.xml b/connectors/camel-wordpress-kafka-connector/pom.xml
index ea0e685..bd95acf 100644
--- a/connectors/camel-wordpress-kafka-connector/pom.xml
+++ b/connectors/camel-wordpress-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-wordpress-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: wordpress</name>
diff --git a/connectors/camel-wordpress-kafka-connector/src/main/assembly/package.xml b/connectors/camel-wordpress-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-wordpress-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-wordpress-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-wordpress-kafka-connector/src/main/docs/camel-wordpress-kafka-sink-connector.adoc b/connectors/camel-wordpress-kafka-connector/src/main/docs/camel-wordpress-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f040d79
--- /dev/null
+++ b/connectors/camel-wordpress-kafka-connector/src/main/docs/camel-wordpress-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-wordpress-kafka-connector-sink]]
+= camel-wordpress-kafka-connector sink configuration
+
+When using camel-wordpress-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-wordpress-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-wordpress sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | The endpoint operation. One of: [post] [user] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.operationDetail* | The second part of an endpoint operation. Needed only when endpoint semantic is not enough, like wordpress:post:delete One of: [delete] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiVersion* | The Wordpress REST API version | "2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.criteria* | The criteria to use with complex searches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.force* | Whether to bypass trash and force deletion. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.id* | The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password from authorized user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.searchCriteria* | Search criteria | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.url* | The Wordpress API URL from your site, e.g. \http://myblog.com/wp-json/ | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.user* | Authorized user to perform writing operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.configuration* | Wordpress component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-wordpress-kafka-connector/src/main/docs/camel-wordpress-kafka-source-connector.adoc b/connectors/camel-wordpress-kafka-connector/src/main/docs/camel-wordpress-kafka-source-connector.adoc
new file mode 100644
index 0000000..6929fd4
--- /dev/null
+++ b/connectors/camel-wordpress-kafka-connector/src/main/docs/camel-wordpress-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-wordpress-kafka-connector-source]]
+= camel-wordpress-kafka-connector source configuration
+
+When using camel-wordpress-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-wordpress-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-wordpress source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.operation* | The endpoint operation. One of: [post] [user] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.operationDetail* | The second part of an endpoint operation. Needed only when endpoint semantic is not enough, like wordpress:post:delete One of: [delete] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apiVersion* | The Wordpress REST API version | "2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.criteria* | The criteria to use with complex searches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.force* | Whether to bypass trash and force deletion. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.id* | The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password from authorized user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchCriteria* | Search criteria | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.url* | The Wordpress API URL from your site, e.g. \http://myblog.com/wp-json/ | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.user* | Authorized user to perform writing operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.configuration* | Wordpress component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-workday-kafka-connector/pom.xml b/connectors/camel-workday-kafka-connector/pom.xml
index 0f718a7..bebb57f 100644
--- a/connectors/camel-workday-kafka-connector/pom.xml
+++ b/connectors/camel-workday-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-workday-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: workday</name>
diff --git a/connectors/camel-workday-kafka-connector/src/main/assembly/package.xml b/connectors/camel-workday-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-workday-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-workday-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-workday-kafka-connector/src/main/docs/camel-workday-kafka-sink-connector.adoc b/connectors/camel-workday-kafka-connector/src/main/docs/camel-workday-kafka-sink-connector.adoc
new file mode 100644
index 0000000..477f1f2
--- /dev/null
+++ b/connectors/camel-workday-kafka-connector/src/main/docs/camel-workday-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-workday-kafka-connector-sink]]
+= camel-workday-kafka-connector sink configuration
+
+When using camel-workday-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-workday-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-workday sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.entity* | The entity to be requested or subscribed via API. One of: [report] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.path* | The API path to access an entity structure. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpConnectionManager* | Pool connection manager for advanced configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportFormat* | Workday Report as a service output format. One of: [json] | "json" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Workday Host name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Workday client Id generated by API client for integrations. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientSecret* | Workday client Secret generated by API client for integrations. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.tokenRefresh* | Workday token Refresh generated for integrations system user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.tenant* | Workday Tenant name. | null | ConfigDef.Importance.HIGH
+| *camel.component.workday.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.workday.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xchange-kafka-connector/pom.xml b/connectors/camel-xchange-kafka-connector/pom.xml
index 821a172..fc8c9c5 100644
--- a/connectors/camel-xchange-kafka-connector/pom.xml
+++ b/connectors/camel-xchange-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xchange-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xchange</name>
diff --git a/connectors/camel-xchange-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xchange-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xchange-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xchange-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xchange-kafka-connector/src/main/docs/camel-xchange-kafka-sink-connector.adoc b/connectors/camel-xchange-kafka-connector/src/main/docs/camel-xchange-kafka-sink-connector.adoc
new file mode 100644
index 0000000..61daaba
--- /dev/null
+++ b/connectors/camel-xchange-kafka-connector/src/main/docs/camel-xchange-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-xchange-kafka-connector-sink]]
+= camel-xchange-kafka-connector sink configuration
+
+When using camel-xchange-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xchange-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xchange sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The exchange to connect to | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.currency* | The currency | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.currencyPair* | The currency pair | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | The method to execute One of: [balances] [fundingHistory] [wallets] [currencies] [currencyMetaData] [currencyPairs] [currencyPairMetaData] [ticker] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.service* | The service to call One of: [marketdata] [metadata] [account] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xchange.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xchange.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xj-kafka-connector/pom.xml b/connectors/camel-xj-kafka-connector/pom.xml
index c680b73..a230d43 100644
--- a/connectors/camel-xj-kafka-connector/pom.xml
+++ b/connectors/camel-xj-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xj-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xj</name>
diff --git a/connectors/camel-xj-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xj-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xj-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xj-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xj-kafka-connector/src/main/docs/camel-xj-kafka-sink-connector.adoc b/connectors/camel-xj-kafka-connector/src/main/docs/camel-xj-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0965b95
--- /dev/null
+++ b/connectors/camel-xj-kafka-connector/src/main/docs/camel-xj-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-xj-kafka-connector-sink]]
+= camel-xj-kafka-connector sink configuration
+
+When using camel-xj-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xj-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xj sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the template. The following is supported by the default URIResolver. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowStAX* | Whether to allow using StAX as the javax.xml.transform.Source. You can enable this if the XSLT library supports StAX such as the Saxon library (camel-saxon). The Xalan library (default in JVM) does not support StAXSource. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteOutputFile* | If you have output=file then this option dictates whether or not the output file should be deleted when the Exchange is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether or not to throw an exception if the input body is null. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Option to specify which output type to use. Possible values are: string, bytes, DOM, file. The first three options are all in memory based, where as file is streamed directly to a java.io.File. For file you must specify the filename in the IN header with the key Exchange.XSLT_FILE_NAME which is also CamelXsltFileName. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime. One of: [string] [bytes] [DOM] [file] | "string" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformDirection* | Transform direction. Either XML2JSON or JSON2XML One of: [XML2JSON] [JSON2XML] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.transformerCacheSize* | The number of javax.xml.transform.Transformer object that are cached for reuse to avoid calls to Template.newTransformer(). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityResolver* | To use a custom org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorListener* | Allows to configure to use a custom javax.xml.transform.ErrorListener. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHandlerFactory* | Allows you to use a custom org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using custom org.apache.camel.builder.xml.ResultHandler types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory* | To use a custom XSLT transformer factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | To use a custom javax.xml.transform.URIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.saxonConfigurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.transformerFactoryConfiguration Strategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.uriResolver* | To use a custom UriResolver. Should not be used together with the option 'uriResolverFactory'. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.uriResolverFactory* | To use a custom UriResolver which depends on a dynamic endpoint resource URI. Should not be used together with the option 'uriResolver'. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xmlsecurity-sign-kafka-connector/pom.xml b/connectors/camel-xmlsecurity-sign-kafka-connector/pom.xml
index 442ab6c..5121ce4 100644
--- a/connectors/camel-xmlsecurity-sign-kafka-connector/pom.xml
+++ b/connectors/camel-xmlsecurity-sign-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xmlsecurity-sign-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xmlsecurity-sign</name>
diff --git a/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/docs/camel-xmlsecurity-sign-kafka-sink-connector.adoc b/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/docs/camel-xmlsecurity-sign-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e0577f4
--- /dev/null
+++ b/connectors/camel-xmlsecurity-sign-kafka-connector/src/main/docs/camel-xmlsecurity-sign-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-xmlsecurity-sign-kafka-connector-sink]]
+= camel-xmlsecurity-sign-kafka-connector sink configuration
+
+When using camel-xmlsecurity-sign-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmlsecurity-sign-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmlsecurity-sign sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The name part in the URI can be chosen by the user to distinguish between different signer endpoints within the camel context. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.addKeyInfoReference* | In order to protect the KeyInfo element from tampering you can add a reference to the signed info element so that it is protected via the signature value. The default value is true. Only relevant when a KeyInfo is returned by KeyAccessor. and KeyInfo#getId() is not null. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseUri* | You can set a base URI which is used in the URI dereferencing. Relative URIs are then concatenated with the base URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.canonicalizationMethod* | Canonicalization method used to canonicalize the SignedInfo element before the digest is calculated. You can use the helper methods XmlSignatureHelper.getCanonicalizationMethod(String algorithm) or getCanonicalizationMethod(String algorithm, List inclusiveNamespacePrefixes) to create a canonicalization method. | "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearHeaders* | Determines if the XML signature specific headers be cleared after signing and verification. Defaults to true. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentObjectId* | Sets the content object Id attribute value. By default a UUID is generated. If you set the null value, then a new UUID will be generated. Only used in the enveloping case. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentReferenceType* | Type of the content reference. The default value is null. This value can be overwritten by the header XmlSignatureConstants#HEADER_CONTENT_REFERENCE_TYPE. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentReferenceUri* | Reference URI for the content to be signed. Only used in the enveloped case. If the reference URI contains an ID attribute value, then the resource schema URI ( setSchemaResourceUri(String)) must also be set because the schema validator will then find out which attributes are ID attributes. Will be ignored in the enveloping or detached case. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cryptoContextProperties* | Sets the crypto context properties. See {link XMLCryptoContext#setProperty(String, Object)}. Possible properties are defined in XMLSignContext an XMLValidateContext (see Supported Properties). The following properties are set by default to the value Boolean#TRUE for the XML validation. If you want to switch these features off you must set the property value to Boolean#FALSE. org.jcp.xml.dsig.validateManifests javax.xml.crypto.dsig.cacheReference | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.digestAlgorithm* | Digest algorithm URI. Optional parameter. This digest algorithm is used for calculating the digest of the input message. If this digest algorithm is not specified then the digest algorithm is calculated from the signature algorithm. Example: \http://www.w3.org/2001/04/xmlenc#sha256 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disallowDoctypeDecl* | Disallows that the incoming XML document contains DTD DOCTYPE declaration. The default value is Boolean#TRUE. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAccessor* | For the signing process, a private key is necessary. You specify a key accessor bean which provides this private key. The key accessor bean must implement the KeyAccessor interface. The package org.apache.camel.component.xmlsecurity.api contains the default implementation class DefaultKeyAccessor which reads the private key from a Java keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.omitXmlDeclaration* | Indicator whether the XML declaration in the outgoing message body should be omitted. Default value is false. Can be overwritten by the header XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputXmlEncoding* | The character encoding of the resulting signed XML document. If null then the encoding of the original XML document is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parentLocalName* | Local name of the parent element to which the XML signature element will be added. Only relevant for enveloped XML signature. Alternatively you can also use setParentXpath(XPathFilterParameterSpec). Default value is null. The value must be null for enveloping and detached XML signature. This parameter or the parameter setParentXpath(XPathFilterParameterSpec) for enveloped signature and the parameter setXpathsToIdAttributes(List) for detached signature must not be set in the same configuration. If the parameters parentXpath and parentLocalName are specified in the same configuration then an exception is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parentNamespace* | Namespace of the parent element to which the XML signature element will be added. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parentXpath* | Sets the XPath to find the parent node in the enveloped case. Either you specify the parent node via this method or the local name and namespace of the parent with the methods setParentLocalName(String) and setParentNamespace(String). Default value is null. The value must be null for enveloping and detached XML signature. If the parameters parentXpath and parentLocalName are specified in the same configuration then an exception is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.plainText* | Indicator whether the message body contains plain text. The default value is false, indicating that the message body contains XML. The value can be overwritten by the header XmlSignatureConstants#HEADER_MESSAGE_IS_PLAIN_TEXT. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.plainTextEncoding* | Encoding of the plain text. Only relevant if the message body is plain text (see parameter plainText. Default value is UTF-8. | "UTF-8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefixForXmlSignatureNamespace* | Namespace prefix for the XML signature namespace \http://www.w3.org/2000/09/xmldsig#. Default value is ds. If null or an empty value is set then no prefix is used for the XML signature namespace. See best practice \http://www.w3.org/TR/xmldsig-bestpractices/#signing-xml- without-namespaces | "ds" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.properties* | For adding additional References and Objects to the XML signature which contain additional properties, you can provide a bean which implements the XmlSignatureProperties interface. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaResourceUri* | Classpath to the XML Schema. Must be specified in the detached XML Signature case for determining the ID attributes, might be set in the enveloped and enveloping case. If set, then the XML document is validated with the specified XML schema. The schema resource URI can be overwritten by the header XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signatureAlgorithm* | Signature algorithm. Default value is \http://www.w3.org/2000/09/xmldsig#rsa-sha1. | "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signatureId* | Sets the signature Id. If this parameter is not set (null value) then a unique ID is generated for the signature ID (default). If this parameter is set to (empty string) then no Id attribute is created in the signature element. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformMethods* | Transforms which are executed on the message body before the digest is calculated. By default, C14n is added and in the case of enveloped signature (see option parentLocalName) also \http://www.w3.org/2000/09/xmldsig#enveloped-signature is added at position 0 of the list. Use methods in XmlSignatureHelper to create the transform methods. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xpathsToIdAttributes* | Define the elements which are signed in the detached case via XPATH expressions to ID attributes (attributes of type ID). For each element found via the XPATH expression a detached signature is created whose reference URI contains the corresponding attribute value (preceded by '#'). The signature becomes the last sibling of the signed element. Elements with deeper hierarchy level are signed first. You can also set the XPATH list dynamically via the header XmlSignatureConstants#HEADER_XPATHS_TO_ID_ATTRIBUTES. The parameter setParentLocalName(String) or setParentXpath(XPathFilterParameterSpec) for enveloped signature and this parameter for detached signature must not be set in the same configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriDereferencer* | If you want to restrict the remote access via reference URIs, you can set an own dereferencer. Optional parameter. If not set the provider default dereferencer is used which can resolve URI fragments, HTTP, file and XPpointer URIs. Attention: The implementation is provider dependent! | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-sign.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-sign.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-sign.signer Configuration* | To use a shared XmlSignerConfiguration configuration to use as base for configuring endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xmlsecurity-verify-kafka-connector/pom.xml b/connectors/camel-xmlsecurity-verify-kafka-connector/pom.xml
index 5bdc6c8..f22cb02 100644
--- a/connectors/camel-xmlsecurity-verify-kafka-connector/pom.xml
+++ b/connectors/camel-xmlsecurity-verify-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xmlsecurity-verify-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xmlsecurity-verify</name>
diff --git a/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/docs/camel-xmlsecurity-verify-kafka-sink-connector.adoc b/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/docs/camel-xmlsecurity-verify-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fb88f67
--- /dev/null
+++ b/connectors/camel-xmlsecurity-verify-kafka-connector/src/main/docs/camel-xmlsecurity-verify-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-xmlsecurity-verify-kafka-connector-sink]]
+= camel-xmlsecurity-verify-kafka-connector sink configuration
+
+When using camel-xmlsecurity-verify-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmlsecurity-verify-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmlsecurity-verify sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The name part in the URI can be chosen by the user to distinguish between different verify endpoints within the camel context. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.baseUri* | You can set a base URI which is used in the URI dereferencing. Relative URIs are then concatenated with the base URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearHeaders* | Determines if the XML signature specific headers be cleared after signing and verification. Defaults to true. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cryptoContextProperties* | Sets the crypto context properties. See {link XMLCryptoContext#setProperty(String, Object)}. Possible properties are defined in XMLSignContext an XMLValidateContext (see Supported Properties). The following properties are set by default to the value Boolean#TRUE for the XML validation. If you want to switch these features off you must set the property value to Boolean#FALSE. org.jcp.xml.dsig.validateManifests javax.xml.crypto.dsig.cacheReference | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disallowDoctypeDecl* | Disallows that the incoming XML document contains DTD DOCTYPE declaration. The default value is Boolean#TRUE. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keySelector* | Provides the key for validating the XML signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.omitXmlDeclaration* | Indicator whether the XML declaration in the outgoing message body should be omitted. Default value is false. Can be overwritten by the header XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputNodeSearch* | Sets the output node search value for determining the node from the XML signature document which shall be set to the output message body. The class of the value depends on the type of the output node search. The output node search is forwarded to XmlSignature2Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputNodeSearchType* | Determines the search type for determining the output node which is serialized into the output message bodyF. See setOutputNodeSearch(Object). The supported default search types you can find in DefaultXmlSignature2Message. | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputXmlEncoding* | The character encoding of the resulting signed XML document. If null then the encoding of the original XML document is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.removeSignatureElements* | Indicator whether the XML signature elements (elements with local name Signature and namesapce \http://www.w3.org/2000/09/xmldsig#) shall be removed from the document set to the output message. Normally, this is only necessary, if the XML signature is enveloped. The default value is Boolean#FALSE. This parameter is forwarded to XmlSignature2Message. This indicator has no effect if the output node search is of type DefaultXmlSignature2Message#OUTPUT_NODE_SEARCH_TYPE_DEFAULT.F | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaResourceUri* | Classpath to the XML Schema. Must be specified in the detached XML Signature case for determining the ID attributes, might be set in the enveloped and enveloping case. If set, then the XML document is validated with the specified XML schema. The schema resource URI can be overwritten by the header XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secureValidation* | Enables secure validation. If true then secure validation is enabled. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validationFailedHandler* | Handles the different validation failed situations. The default implementation throws specific exceptions for the different situations (All exceptions have the package name org.apache.camel.component.xmlsecurity.api and are a sub-class of XmlSignatureInvalidException. If the signature value validation fails, a XmlSignatureInvalidValueException is thrown. If a reference validation fails, a XmlSignatureInvalidContentHashException is thrown. For more detailed information, see the JavaDoc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xmlSignature2Message* | Bean which maps the XML signature to the output-message after the validation. How this mapping should be done can be configured by the options outputNodeSearchType, outputNodeSearch, and removeSignatureElements. The default implementation offers three possibilities which are related to the three output node search types Default, ElementName, and XPath. The default implementation determines a node which is then serialized and set to the body of the output message If the search type is ElementName then the output node (which must be in this case an element) is determined by the local name and namespace defined in the search value (see option outputNodeSearch). If the search type is XPath then the output node is determined by the XPath specified in the search value (in this case the output node can be of type Element, TextNode or Document). If the output node search type is Default then the following rules apply: In the enveloped XML signature case (there is a reference with URI= and transform \http://www.w3.org/2000/09/xmldsig#enveloped-signature), the incoming XML document without the Signature element is set to the output message body. In the non-enveloped XML signature case, the message body is determined from a referenced Object; this is explained in more detail in chapter Output Node Determination in Enveloping XML Signature Case. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xmlSignatureChecker* | This interface allows the application to check the XML signature before the validation is executed. This step is recommended in \http://www.w3.org/TR/xmldsig-bestpractices/#check-what-is-signed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriDereferencer* | If you want to restrict the remote access via reference URIs, you can set an own dereferencer. Optional parameter. If not set the provider default dereferencer is used which can resolve URI fragments, HTTP, file and XPpointer URIs. Attention: The implementation is provider dependent! | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-verify.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-verify.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-verify.verifier Configuration* | To use a shared XmlVerifierConfiguration configuration to use as base for configuring endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xmpp-kafka-connector/pom.xml b/connectors/camel-xmpp-kafka-connector/pom.xml
index ad444e6..d5bba34 100644
--- a/connectors/camel-xmpp-kafka-connector/pom.xml
+++ b/connectors/camel-xmpp-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xmpp-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xmpp</name>
diff --git a/connectors/camel-xmpp-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xmpp-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xmpp-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xmpp-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xmpp-kafka-connector/src/main/docs/camel-xmpp-kafka-sink-connector.adoc b/connectors/camel-xmpp-kafka-connector/src/main/docs/camel-xmpp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f5c85d5
--- /dev/null
+++ b/connectors/camel-xmpp-kafka-connector/src/main/docs/camel-xmpp-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-xmpp-kafka-connector-sink]]
+= camel-xmpp-kafka-connector sink configuration
+
+When using camel-xmpp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmpp sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.participant* | JID (Jabber ID) of person to receive messages. room parameter has precedence over participant. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.login* | Whether to login the user. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nickname* | Use nickname when joining room. If room is specified and nickname is not, user will be used for the nickname. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubsub* | Accept pubsub packets on input, default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.room* | If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are supermanjabber.org and want to join the krypton room, then the room URL is kryptonconference.jabber.org. Note the conference part. It is not a requirement to provide the full room JID. If the room parameter does not contain the symbol, the domain part will be discovered and added by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceName* | The name of the service you are connecting to. For Google Talk, this would be gmail.com. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a lazy connection when needed by a producer, and will poll for a consumer connection until the connection is established. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createAccount* | If true, an attempt to create an account will be made. Default is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resource* | XMPP resource. The default is Camel. | "Camel" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionConfig* | To use an existing connection configuration. Currently org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration is only supported (XMPP over TCP). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.roomPassword* | Password for room | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | User name (without server name). If not specified, anonymous login will be attempted. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xmpp-kafka-connector/src/main/docs/camel-xmpp-kafka-source-connector.adoc b/connectors/camel-xmpp-kafka-connector/src/main/docs/camel-xmpp-kafka-source-connector.adoc
new file mode 100644
index 0000000..406ab2d
--- /dev/null
+++ b/connectors/camel-xmpp-kafka-connector/src/main/docs/camel-xmpp-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-xmpp-kafka-connector-source]]
+= camel-xmpp-kafka-connector source configuration
+
+When using camel-xmpp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmpp source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.participant* | JID (Jabber ID) of person to receive messages. room parameter has precedence over participant. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.login* | Whether to login the user. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nickname* | Use nickname when joining room. If room is specified and nickname is not, user will be used for the nickname. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubsub* | Accept pubsub packets on input, default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.room* | If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are supermanjabber.org and want to join the krypton room, then the room URL is kryptonconference.jabber.org. Note the conference part. It is not a requirement to provide the full room JID. If the room parameter does not contain the symbol, the domain part will be discovered and added by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceName* | The name of the service you are connecting to. For Google Talk, this would be gmail.com. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a lazy connection when needed by a producer, and will poll for a consumer connection until the connection is established. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createAccount* | If true, an attempt to create an account will be made. Default is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resource* | XMPP resource. The default is Camel. | "Camel" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionPollDelay* | The amount of time in seconds between polls (in seconds) to verify the health of the XMPP connection, or between attempts to establish an initial consumer connection. Camel will try to re-establish a connection if it has become inactive. Default is 10 seconds. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doc* | Set a doc header on the IN message containing a Document form of the incoming packet; default is true if presence or pubsub are true, otherwise false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionConfig* | To use an existing connection configuration. Currently org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration is only supported (XMPP over TCP). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.roomPassword* | Password for room | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | User name (without server name). If not specified, anonymous login will be attempted. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xquery-kafka-connector/pom.xml b/connectors/camel-xquery-kafka-connector/pom.xml
index 2b0a892..120487e 100644
--- a/connectors/camel-xquery-kafka-connector/pom.xml
+++ b/connectors/camel-xquery-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xquery-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xquery</name>
diff --git a/connectors/camel-xquery-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xquery-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xquery-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xquery-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xquery-kafka-connector/src/main/docs/camel-xquery-kafka-sink-connector.adoc b/connectors/camel-xquery-kafka-connector/src/main/docs/camel-xquery-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b419e88
--- /dev/null
+++ b/connectors/camel-xquery-kafka-connector/src/main/docs/camel-xquery-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-xquery-kafka-connector-sink]]
+= camel-xquery-kafka-connector sink configuration
+
+When using camel-xquery-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xquery-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xquery sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | The name of the template to load from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowStAX* | Whether to allow using StAX mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To use a Camel Message header as the input source instead of Message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namespacePrefixes* | Allows to control which namespace prefixes to use for a set of namespace mappings | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultsFormat* | What output result to use One of: [Bytes] [BytesSource] [DOM] [DOMSource] [List] [String] [StringSource] | "DOM" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultType* | What output result to use defined as a class | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stripsAllWhiteSpace* | Whether to strip all whitespaces | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Additional parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.properties* | Properties to configure the serialization parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.staticQueryContext* | To use a custom Saxon StaticQueryContext | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xquery-kafka-connector/src/main/docs/camel-xquery-kafka-source-connector.adoc b/connectors/camel-xquery-kafka-connector/src/main/docs/camel-xquery-kafka-source-connector.adoc
new file mode 100644
index 0000000..3b93782
--- /dev/null
+++ b/connectors/camel-xquery-kafka-connector/src/main/docs/camel-xquery-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-xquery-kafka-connector-source]]
+= camel-xquery-kafka-connector source configuration
+
+When using camel-xquery-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xquery-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xquery source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceUri* | The name of the template to load from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowStAX* | Whether to allow using StAX mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerName* | To use a Camel Message header as the input source instead of Message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespacePrefixes* | Allows to control which namespace prefixes to use for a set of namespace mappings | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultsFormat* | What output result to use One of: [Bytes] [BytesSource] [DOM] [DOMSource] [List] [String] [StringSource] | "DOM" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultType* | What output result to use defined as a class | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stripsAllWhiteSpace* | Whether to strip all whitespaces | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | Additional parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.properties* | Properties to configure the serialization parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.staticQueryContext* | To use a custom Saxon StaticQueryContext | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xslt-kafka-connector/pom.xml b/connectors/camel-xslt-kafka-connector/pom.xml
index ec5249d..2622bb4 100644
--- a/connectors/camel-xslt-kafka-connector/pom.xml
+++ b/connectors/camel-xslt-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xslt-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xslt</name>
diff --git a/connectors/camel-xslt-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xslt-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xslt-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xslt-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xslt-kafka-connector/src/main/docs/camel-xslt-kafka-sink-connector.adoc b/connectors/camel-xslt-kafka-connector/src/main/docs/camel-xslt-kafka-sink-connector.adoc
new file mode 100644
index 0000000..190d200
--- /dev/null
+++ b/connectors/camel-xslt-kafka-connector/src/main/docs/camel-xslt-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-xslt-kafka-connector-sink]]
+= camel-xslt-kafka-connector sink configuration
+
+When using camel-xslt-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xslt-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xslt sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the template. The following is supported by the default URIResolver. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteOutputFile* | If you have output=file then this option dictates whether or not the output file should be deleted when the Exchange is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether or not to throw an exception if the input body is null. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Option to specify which output type to use. Possible values are: string, bytes, DOM, file. The first three options are all in memory based, where as file is streamed directly to a java.io.File. For file you must specify the filename in the IN header with the key Exchange.XSLT_FILE_NAME which is also CamelXsltFileName. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime. One of: [string] [bytes] [DOM] [file] | "string" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerCacheSize* | The number of javax.xml.transform.Transformer object that are cached for reuse to avoid calls to Template.newTransformer(). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityResolver* | To use a custom org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorListener* | Allows to configure to use a custom javax.xml.transform.ErrorListener. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHandlerFactory* | Allows you to use a custom org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using custom org.apache.camel.builder.xml.ResultHandler types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory* | To use a custom XSLT transformer factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | To use a custom javax.xml.transform.URIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.uriResolver* | To use a custom UriResolver. Should not be used together with the option 'uriResolverFactory'. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.uriResolverFactory* | To use a custom UriResolver which depends on a dynamic endpoint resource URI. Should not be used together with the option 'uriResolver'. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-xslt-saxon-kafka-connector/pom.xml b/connectors/camel-xslt-saxon-kafka-connector/pom.xml
index 1a4b51a..3117268 100644
--- a/connectors/camel-xslt-saxon-kafka-connector/pom.xml
+++ b/connectors/camel-xslt-saxon-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-xslt-saxon-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: xslt-saxon</name>
diff --git a/connectors/camel-xslt-saxon-kafka-connector/src/main/assembly/package.xml b/connectors/camel-xslt-saxon-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-xslt-saxon-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-xslt-saxon-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-xslt-saxon-kafka-connector/src/main/docs/camel-xslt-saxon-kafka-sink-connector.adoc b/connectors/camel-xslt-saxon-kafka-connector/src/main/docs/camel-xslt-saxon-kafka-sink-connector.adoc
new file mode 100644
index 0000000..320f764
--- /dev/null
+++ b/connectors/camel-xslt-saxon-kafka-connector/src/main/docs/camel-xslt-saxon-kafka-sink-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-xslt-saxon-kafka-connector-sink]]
+= camel-xslt-saxon-kafka-connector sink configuration
+
+When using camel-xslt-saxon-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xslt-saxon-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xslt-saxon sink connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the template. The following is supported by the default URIResolver. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowStAX* | Whether to allow using StAX as the javax.xml.transform.Source. You can enable this if the XSLT library supports StAX such as the Saxon library (camel-saxon). The Xalan library (default in JVM) does not support StAXSource. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteOutputFile* | If you have output=file then this option dictates whether or not the output file should be deleted when the Exchange is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether or not to throw an exception if the input body is null. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Option to specify which output type to use. Possible values are: string, bytes, DOM, file. The first three options are all in memory based, where as file is streamed directly to a java.io.File. For file you must specify the filename in the IN header with the key Exchange.XSLT_FILE_NAME which is also CamelXsltFileName. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime. One of: [string] [bytes] [DOM] [file] | "string" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerCacheSize* | The number of javax.xml.transform.Transformer object that are cached for reuse to avoid calls to Template.newTransformer(). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityResolver* | To use a custom org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorListener* | Allows to configure to use a custom javax.xml.transform.ErrorListener. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHandlerFactory* | Allows you to use a custom org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using custom org.apache.camel.builder.xml.ResultHandler types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory* | To use a custom XSLT transformer factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | To use a custom javax.xml.transform.URIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.saxonConfiguration Properties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.uriResolver* | To use a custom UriResolver. Should not be used together with the option 'uriResolverFactory'. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.uriResolverFactory* | To use a custom UriResolver which depends on a dynamic endpoint resource URI. Should not be used together with the option 'uriResolver'. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-yammer-kafka-connector/pom.xml b/connectors/camel-yammer-kafka-connector/pom.xml
index 861363e..8aa8a89 100644
--- a/connectors/camel-yammer-kafka-connector/pom.xml
+++ b/connectors/camel-yammer-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-yammer-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: yammer</name>
diff --git a/connectors/camel-yammer-kafka-connector/src/main/assembly/package.xml b/connectors/camel-yammer-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-yammer-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-yammer-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-yammer-kafka-connector/src/main/docs/camel-yammer-kafka-sink-connector.adoc b/connectors/camel-yammer-kafka-connector/src/main/docs/camel-yammer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7ac6db4
--- /dev/null
+++ b/connectors/camel-yammer-kafka-connector/src/main/docs/camel-yammer-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-yammer-kafka-connector-sink]]
+= camel-yammer-kafka-connector sink configuration
+
+When using camel-yammer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-yammer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-yammer sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.function* | The function to use One of: [MESSAGES] [MY_FEED] [ALGO] [FOLLOWING] [SENT] [PRIVATE] [RECEIVED] [USERS] [CURRENT] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.useJson* | Set to true if you want to use raw JSON rather than converting to POJOs. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.consumerKey* | The consumer key | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.consumerSecret* | The consumer secret | null | ConfigDef.Importance.HIGH
+| *camel.component.yammer.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.config* | To use a shared yammer configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-yammer-kafka-connector/src/main/docs/camel-yammer-kafka-source-connector.adoc b/connectors/camel-yammer-kafka-connector/src/main/docs/camel-yammer-kafka-source-connector.adoc
new file mode 100644
index 0000000..80e7a04
--- /dev/null
+++ b/connectors/camel-yammer-kafka-connector/src/main/docs/camel-yammer-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-yammer-kafka-connector-source]]
+= camel-yammer-kafka-connector source configuration
+
+When using camel-yammer-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-yammer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-yammer source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.function* | The function to use One of: [MESSAGES] [MY_FEED] [ALGO] [FOLLOWING] [SENT] [PRIVATE] [RECEIVED] [USERS] [CURRENT] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.useJson* | Set to true if you want to use raw JSON rather than converting to POJOs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Delay between polling in millis | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | Return only the specified number of messages. Works for threaded=true and threaded=extended. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.newerThan* | Returns messages newer than the message ID specified as a numeric string. This should be used when polling for new messages. If you're looking at messages, and the most recent message returned is 3516, you can make a request with the parameter newerThan=3516� to ensure that you do not get duplicate copies of messages already on your page. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.olderThan* | Returns messages older than the message ID specified as a numeric string. This is useful for paginating messages. For example, if you're currently viewing 20 messages and the oldest is number 2912, you could append olderThan=2912� to your request to get the 20 messages prior to those you're seeing. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.threaded* | threaded=true will only return the first message in each thread. This parameter is intended for apps which display message threads collapsed. threaded=extended will return the thread starter messages in order of most recently active as well as the two most recent messages, as they are viewed in the default view on the Yammer web interface. One of: [true] [extended] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | The user id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.consumerKey* | The consumer key | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.consumerSecret* | The consumer secret | null | ConfigDef.Importance.HIGH
+| *camel.component.yammer.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.config* | To use a shared yammer configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-zendesk-kafka-connector/pom.xml b/connectors/camel-zendesk-kafka-connector/pom.xml
index a2be6c2..0cae9ab 100644
--- a/connectors/camel-zendesk-kafka-connector/pom.xml
+++ b/connectors/camel-zendesk-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-zendesk-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: zendesk</name>
diff --git a/connectors/camel-zendesk-kafka-connector/src/main/assembly/package.xml b/connectors/camel-zendesk-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-zendesk-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-zendesk-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-zendesk-kafka-connector/src/main/docs/camel-zendesk-kafka-sink-connector.adoc b/connectors/camel-zendesk-kafka-connector/src/main/docs/camel-zendesk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c9b9ffd
--- /dev/null
+++ b/connectors/camel-zendesk-kafka-connector/src/main/docs/camel-zendesk-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-zendesk-kafka-connector-sink]]
+= camel-zendesk-kafka-connector sink configuration
+
+When using camel-zendesk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zendesk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zendesk sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.methodName* | What operation to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverUrl* | The server URL to connect. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The OAuth token. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.token* | The security token. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.zendesk* | To use a shared Zendesk instance. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-zendesk-kafka-connector/src/main/docs/camel-zendesk-kafka-source-connector.adoc b/connectors/camel-zendesk-kafka-connector/src/main/docs/camel-zendesk-kafka-source-connector.adoc
new file mode 100644
index 0000000..bedc625
--- /dev/null
+++ b/connectors/camel-zendesk-kafka-connector/src/main/docs/camel-zendesk-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-zendesk-kafka-connector-source]]
+= camel-zendesk-kafka-connector source configuration
+
+When using camel-zendesk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zendesk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zendesk source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.methodName* | What operation to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverUrl* | The server URL to connect. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The OAuth token. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.token* | The security token. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.zendesk* | To use a shared Zendesk instance. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-zookeeper-kafka-connector/pom.xml b/connectors/camel-zookeeper-kafka-connector/pom.xml
index 3daea0b..8ba94ad 100644
--- a/connectors/camel-zookeeper-kafka-connector/pom.xml
+++ b/connectors/camel-zookeeper-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-zookeeper-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: zookeeper</name>
diff --git a/connectors/camel-zookeeper-kafka-connector/src/main/assembly/package.xml b/connectors/camel-zookeeper-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-zookeeper-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-zookeeper-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-zookeeper-kafka-connector/src/main/docs/camel-zookeeper-kafka-sink-connector.adoc b/connectors/camel-zookeeper-kafka-connector/src/main/docs/camel-zookeeper-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cdc04f5
--- /dev/null
+++ b/connectors/camel-zookeeper-kafka-connector/src/main/docs/camel-zookeeper-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-zookeeper-kafka-connector-sink]]
+= camel-zookeeper-kafka-connector sink configuration
+
+When using camel-zookeeper-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zookeeper-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zookeeper sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.serverUrls* | The zookeeper server hosts (multiple servers can be separated by comma) | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.path* | The node in the ZooKeeper server (aka znode) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.listChildren* | Whether the children of the node should be listed | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The time interval to wait on connection before timing out. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.create* | Should the endpoint create the node if it does not currently exist. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createMode* | The create mode that should be used for the newly created node One of: [PERSISTENT] [PERSISTENT_SEQUENTIAL] [EPHEMERAL] [EPHEMERAL_SEQUENTIAL] | "EPHEMERAL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.configuration* | To use a shared ZooKeeperConfiguration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-zookeeper-kafka-connector/src/main/docs/camel-zookeeper-kafka-source-connector.adoc b/connectors/camel-zookeeper-kafka-connector/src/main/docs/camel-zookeeper-kafka-source-connector.adoc
new file mode 100644
index 0000000..ea2e0dd
--- /dev/null
+++ b/connectors/camel-zookeeper-kafka-connector/src/main/docs/camel-zookeeper-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-zookeeper-kafka-connector-source]]
+= camel-zookeeper-kafka-connector source configuration
+
+When using camel-zookeeper-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zookeeper-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zookeeper source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.serverUrls* | The zookeeper server hosts (multiple servers can be separated by comma) | null | ConfigDef.Importance.HIGH
+| *camel.source.path.path* | The node in the ZooKeeper server (aka znode) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.listChildren* | Whether the children of the node should be listed | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | The time interval to wait on connection before timing out. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoff* | The time interval to backoff for after an error before retrying. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeat* | Should changes to the znode be 'watched' and repeatedly processed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageOnDelete* | Upon the delete of a znode, should an empty message be send to the consumer | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.configuration* | To use a shared ZooKeeperConfiguration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/camel-zookeeper-master-kafka-connector/pom.xml b/connectors/camel-zookeeper-master-kafka-connector/pom.xml
index 9e275a0..e8329c6 100644
--- a/connectors/camel-zookeeper-master-kafka-connector/pom.xml
+++ b/connectors/camel-zookeeper-master-kafka-connector/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>connectors</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>camel-zookeeper-master-kafka-connector</artifactId>
   <name>Camel-Kafka-Connector :: zookeeper-master</name>
diff --git a/connectors/camel-zookeeper-master-kafka-connector/src/main/assembly/package.xml b/connectors/camel-zookeeper-master-kafka-connector/src/main/assembly/package.xml
index 4fa3c4b..b52bbc5 100644
--- a/connectors/camel-zookeeper-master-kafka-connector/src/main/assembly/package.xml
+++ b/connectors/camel-zookeeper-master-kafka-connector/src/main/assembly/package.xml
@@ -18,16 +18,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>${project.basedir}/../..</directory>
-      <outputDirectory>share/doc/${project.artifactId}/</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -45,7 +46,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory>share/java/${project.artifactId}</outputDirectory>
+      <outputDirectory>${project.artifactId}/</outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/connectors/camel-zookeeper-master-kafka-connector/src/main/docs/camel-zookeeper-master-kafka-source-connector.adoc b/connectors/camel-zookeeper-master-kafka-connector/src/main/docs/camel-zookeeper-master-kafka-source-connector.adoc
new file mode 100644
index 0000000..8c7369f
--- /dev/null
+++ b/connectors/camel-zookeeper-master-kafka-connector/src/main/docs/camel-zookeeper-master-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-zookeeper-master-kafka-connector-source]]
+= camel-zookeeper-master-kafka-connector source configuration
+
+When using camel-zookeeper-master-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zookeeper-master-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zookeeper-master source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.groupName* | The name of the cluster group to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.consumerEndpointUri* | The consumer endpoint to use in master/slave mode | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.containerId Factory* | To use a custom ContainerIdFactory for creating container ids. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.maximumConnection Timeout* | Timeout in millis to use when connecting to the zookeeper ensemble | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.zkRoot* | The root path to use in zookeeper where information is stored which nodes are master/slave etc. Will by default use: /camel/zookeepermaster/clusters/master | "/camel/zookeepermaster/clusters/master" | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.zooKeeperUrl* | The url for the zookeeper ensemble | "localhost:2181" | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.curator* | To use a custom configured CuratorFramework as connection to zookeeper ensemble. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.zooKeeperPassword* | The password to use when connecting to the zookeeper ensemble | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/connectors/pom.xml b/connectors/pom.xml
index d39a057..5073ca2 100644
--- a/connectors/pom.xml
+++ b/connectors/pom.xml
@@ -17,14 +17,12 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.camel.kafkaconnector</groupId>
         <artifactId>parent</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
+        <version>0.2.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
@@ -80,6 +78,9 @@
                     <!--  <failOnMissingDescription>false</failOnMissingDescription> -->
                     <!-- Process just this components -->
                     <!-- <filter></filter> -->
+                    <!-- Regenerate connector pom file completely even if one already exists -->
+                    <!-- WARNING: you may lose some changes done to the pom. -->
+                    <!-- <overridePomFile>false</overridePomFile> -->
                     <initialPomTemplate>${project.basedir}/template-connector-pom.xml</initialPomTemplate>
                     <noticeTemplate>${project.basedir}/camel-kafka-connector-NOTICE.txt</noticeTemplate>
                     <licenseTemplate>${project.basedir}/camel-kafka-connector-LICENSE.txt</licenseTemplate>
diff --git a/connectors/template-connector-package.xml b/connectors/template-connector-package.xml
index 7a0dd04..cefddd1 100644
--- a/connectors/template-connector-package.xml
+++ b/connectors/template-connector-package.xml
@@ -19,16 +19,17 @@
 
 -->
 <assembly>
-  <!-- Assembles a packaged version targeting OS installation. XXXX-->
+  <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory><#noparse>${project.basedir}/../..</#noparse></directory>
-      <outputDirectory><#noparse>share/doc/${project.artifactId}/</#noparse></outputDirectory>
+      <outputDirectory><#noparse>${project.artifactId}/</#noparse></outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -46,7 +47,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory><#noparse>share/java/${project.artifactId}</#noparse></outputDirectory>
+      <outputDirectory><#noparse>${project.artifactId}/</#noparse></outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/core/pom.xml b/core/pom.xml
index ecf9158..125cdd6 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.camel.kafkaconnector</groupId>
         <artifactId>parent</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
+        <version>0.2.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
@@ -37,64 +37,29 @@
         <!--  Camel -->
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core</artifactId>
+            <artifactId>camel-core-engine</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-main</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-seda</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-direct</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-timer</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-log</artifactId>
+        </dependency>
 
-        <!--  Camel components  -->
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-cassandraql</artifactId>
-            <exclusions>
-               <exclusion>
-                          <groupId>com.google.guava</groupId>
-                          <artifactId>guava</artifactId>
-               </exclusion>
-            </exclusions>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-telegram</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-aws-sqs</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-aws-s3</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-aws-sns</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-aws-kinesis</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-syslog</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-http</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-elasticsearch-rest</artifactId>
-        </dependency>
 
         <!-- Kafka -->
         <dependency>
@@ -149,7 +114,6 @@
             <artifactId>camel-debezium-common</artifactId>
             <scope>test</scope>
         </dependency>
-
     </dependencies>
 
     <build>
diff --git a/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectConverter.java b/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectConverter.java
deleted file mode 100644
index b1ad0ac..0000000
--- a/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectConverter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.kafkaconnector.converters;
-
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.S3ObjectInputStream;
-import org.apache.kafka.connect.data.Schema;
-import org.apache.kafka.connect.data.SchemaAndValue;
-import org.apache.kafka.connect.storage.Converter;
-
-public class S3ObjectConverter implements Converter {
-
-    private final S3ObjectSerializer serializer = new S3ObjectSerializer();
-
-    @Override
-    public void configure(Map<String, ?> configs, boolean isKey) {
-    }
-
-    @Override
-    public byte[] fromConnectData(String topic, Schema schema, Object value) {
-        return serializer.serialize(topic, (S3ObjectInputStream) value);
-    }
-
-    @Override
-    public SchemaAndValue toConnectData(String arg0, byte[] arg1) {
-        return null;
-    }
-
-}
diff --git a/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectSerializer.java b/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectSerializer.java
deleted file mode 100644
index e50e68b..0000000
--- a/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectSerializer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.kafkaconnector.converters;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.S3ObjectInputStream;
-import org.apache.kafka.common.serialization.Serializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class S3ObjectSerializer implements Serializer<S3ObjectInputStream> {
-    private static final Logger LOG = LoggerFactory.getLogger(S3ObjectSerializer.class);
-
-    @Override
-    public void configure(Map<String, ?> configs, boolean isKey) {
-    }
-
-    @Override
-    public byte[] serialize(String topic, S3ObjectInputStream data) {
-        InputStream is = data.getDelegateStream();
-        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-
-        int nRead;
-        byte[] byteArray = new byte[16384];
-
-        try {
-            while ((nRead = is.read(byteArray, 0, byteArray.length)) != -1) {
-                buffer.write(byteArray, 0, nRead);
-            }
-        } catch (IOException e) {
-            LOG.warn("I/O error while serializing data from or to topic {}: {} | {}", topic, e.getMessage(), e);
-        }
-
-        return buffer.toByteArray();
-    }
-
-    @Override
-    public void close() {
-    }
-
-}
diff --git a/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectTransformer.java b/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectTransformer.java
deleted file mode 100644
index dc9e427..0000000
--- a/core/src/main/java/org/apache/camel/kafkaconnector/converters/S3ObjectTransformer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.kafkaconnector.converters;
-
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.S3ObjectInputStream;
-import org.apache.kafka.common.config.ConfigDef;
-import org.apache.kafka.connect.connector.ConnectRecord;
-import org.apache.kafka.connect.data.Schema;
-import org.apache.kafka.connect.transforms.Transformation;
-
-public class S3ObjectTransformer<R extends ConnectRecord<R>> implements Transformation<R> {
-
-    public static final ConfigDef CONFIG_DEF = new ConfigDef()
-            .define("test", ConfigDef.Type.STRING, "test", ConfigDef.Importance.MEDIUM, "Transform the content of a bucket into a string ");
-
-    private final S3ObjectSerializer serializer = new S3ObjectSerializer();
-
-    @Override
-    public void configure(Map<String, ?> configs) {
-    }
-
-    @Override
-    public R apply(R record) {
-        byte[] v = serializer.serialize(record.topic(), (S3ObjectInputStream) record.value());
-        String finalValue = new String(v);
-        return record.newRecord(record.topic(), record.kafkaPartition(), null, record.key(), Schema.STRING_SCHEMA, finalValue, record.timestamp());
-    }
-
-    @Override
-    public void close() {
-    }
-
-    @Override
-    public ConfigDef config() {
-        return CONFIG_DEF;
-    }
-
-}
diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/CamelSinkTaskTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/CamelSinkTaskTest.java
index a169744..3003afa 100644
--- a/core/src/test/java/org/apache/camel/kafkaconnector/CamelSinkTaskTest.java
+++ b/core/src/test/java/org/apache/camel/kafkaconnector/CamelSinkTaskTest.java
@@ -22,7 +22,6 @@
 import java.util.List;
 import java.util.Map;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.Exchange;
 import org.apache.kafka.connect.data.Schema;
@@ -36,7 +35,7 @@
 public class CamelSinkTaskTest {
 
     @Test
-    public void testOnlyBody() throws JsonProcessingException, InterruptedException {
+    public void testOnlyBody() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -60,7 +59,7 @@
     }
 
     @Test
-    public void testBodyAndHeaders() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndHeaders() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -104,7 +103,7 @@
     }
     
     @Test
-    public void testBodyAndProperties() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndProperties() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -148,7 +147,7 @@
     }
     
     @Test
-    public void testBodyAndPropertiesHeadersMixed() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndPropertiesHeadersMixed() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -206,7 +205,7 @@
     }
     
     @Test
-    public void testBodyAndHeadersMap() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndHeadersMap() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -261,7 +260,7 @@
     }
     
     @Test
-    public void testBodyAndPropertiesHeadersMapMixed() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndPropertiesHeadersMapMixed() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -337,7 +336,7 @@
     }
     
     @Test
-    public void testBodyAndHeadersList() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndHeadersList() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -388,7 +387,7 @@
     }
     
     @Test
-    public void testBodyAndPropertiesHeadersListMixed() throws JsonProcessingException, InterruptedException {
+    public void testBodyAndPropertiesHeadersListMixed() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -458,7 +457,7 @@
     }
 
     @Test
-    public void testUrlPrecedenceOnComponentProperty() throws JsonProcessingException, InterruptedException {
+    public void testUrlPrecedenceOnComponentProperty() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "seda:test");
         props.put("topics", "mytopic");
@@ -485,7 +484,7 @@
     }
 
     @Test
-    public void testOnlyBodyUsingComponentProperty() throws JsonProcessingException, InterruptedException {
+    public void testOnlyBodyUsingComponentProperty() {
         Map<String, String> props = new HashMap<>();
         props.put("topics", "mytopic");
         props.put(CamelSinkConnectorConfig.CAMEL_SINK_COMPONENT_CONF, "seda");
@@ -513,7 +512,7 @@
     }
 
     @Test
-    public void testOnlyBodyUsingMultipleComponentProperties() throws JsonProcessingException, InterruptedException {
+    public void testOnlyBodyUsingMultipleComponentProperties() {
         Map<String, String> props = new HashMap<>();
         props.put("topics", "mytopic");
         props.put(CamelSinkConnectorConfig.CAMEL_SINK_COMPONENT_CONF, "seda");
diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/CamelSourceTaskTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/CamelSourceTaskTest.java
index 89205ae..a4ad86c 100644
--- a/core/src/test/java/org/apache/camel/kafkaconnector/CamelSourceTaskTest.java
+++ b/core/src/test/java/org/apache/camel/kafkaconnector/CamelSourceTaskTest.java
@@ -217,7 +217,7 @@
     }
 
     @Test
-    public void testSourcePollingConsumerOptions() throws InterruptedException {
+    public void testSourcePollingConsumerOptions() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.source.url", "timer:kafkaconnector");
         props.put("camel.source.kafka.topic", "mytopic");
diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/DataFormatTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/DataFormatTest.java
index cf237ae..bd07866 100644
--- a/core/src/test/java/org/apache/camel/kafkaconnector/DataFormatTest.java
+++ b/core/src/test/java/org/apache/camel/kafkaconnector/DataFormatTest.java
@@ -19,7 +19,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import org.apache.camel.component.hl7.HL7DataFormat;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.kafkaconnector.utils.CamelMainSupport;
@@ -32,7 +31,7 @@
 public class DataFormatTest {
 
     @Test
-    public void testDataFormatSource() throws JsonProcessingException, InterruptedException {
+    public void testDataFormatSource() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.source.url", "direct://test");
         props.put("camel.source.kafka.topic", "mytopic");
@@ -44,7 +43,7 @@
     }
 
     @Test
-    public void testDataFormatSink() throws JsonProcessingException, InterruptedException {
+    public void testDataFormatSink() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.sink.url", "direct://test");
         props.put("camel.sink.kafka.topic", "mytopic");
diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/PropertiesOrderTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/PropertiesOrderTest.java
index d1cb7b2..5402589 100644
--- a/core/src/test/java/org/apache/camel/kafkaconnector/PropertiesOrderTest.java
+++ b/core/src/test/java/org/apache/camel/kafkaconnector/PropertiesOrderTest.java
@@ -19,13 +19,12 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import org.junit.jupiter.api.Test;
 
 public class PropertiesOrderTest {
 
     @Test
-    public void testOneOrder() throws JsonProcessingException, InterruptedException {
+    public void testOneOrder() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.source.url", "seda://test");
         props.put("camel.source.kafka.topic", "mytopic");
@@ -38,7 +37,7 @@
     }
 
     @Test
-    public void testOppositOrder() throws JsonProcessingException, InterruptedException {
+    public void testOppositOrder() {
         Map<String, String> props = new HashMap<>();
         props.put("camel.source.url", "seda://test");
         props.put("camel.source.kafka.topic", "mytopic");
diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/utils/SchemaHelperTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/utils/SchemaHelperTest.java
index e37feff..a43f76b 100644
--- a/core/src/test/java/org/apache/camel/kafkaconnector/utils/SchemaHelperTest.java
+++ b/core/src/test/java/org/apache/camel/kafkaconnector/utils/SchemaHelperTest.java
@@ -23,8 +23,6 @@
 import java.util.List;
 import java.util.Map;
 
-import com.amazonaws.services.s3.model.S3ObjectInputStream;
-import org.apache.http.client.methods.HttpDelete;
 import org.apache.kafka.connect.data.Decimal;
 import org.apache.kafka.connect.data.Schema;
 import org.apache.kafka.connect.data.SchemaBuilder;
@@ -78,7 +76,11 @@
         assertEquals(Schema.Type.STRUCT, SchemaHelper.buildSchemaBuilderForType(structValue).type());
 
         // finally how to handle if we have no idea about the value
-        final S3ObjectInputStream s3ObjectInputStream = new S3ObjectInputStream(System.in, new HttpDelete());
-        assertEquals(Schema.Type.BYTES, SchemaHelper.buildSchemaBuilderForType(s3ObjectInputStream).type());
+        final CustomType customType = new CustomType();
+        assertEquals(Schema.Type.BYTES, SchemaHelper.buildSchemaBuilderForType(customType).type());
+    }
+
+    private class CustomType {
+
     }
 }
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/utils/TaskHelperTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/utils/TaskHelperTest.java
index 3688d76..2f32329 100644
--- a/core/src/test/java/org/apache/camel/kafkaconnector/utils/TaskHelperTest.java
+++ b/core/src/test/java/org/apache/camel/kafkaconnector/utils/TaskHelperTest.java
@@ -18,7 +18,6 @@
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 
 import org.junit.jupiter.api.Test;
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index d52b439..b3e9ce3 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -1,3 +1,7 @@
-* xref:index.adoc[About]
-* xref:try-it-out-locally.adoc[Try it out locally]
-* xref:try-it-out-on-openshift-with-strimzi.adoc[Try it out on OpenShift with Strimzi]
+* xref:about.adoc[What is it?]
+* xref:getting-started.adoc[Getting started]
+** xref:try-it-out-locally.adoc[Try it locally]
+** xref:try-it-out-on-openshift-with-strimzi.adoc[Try it on OpenShift cluster]
+** xref:getting-started-with-packages.adoc[Packages documentation]
+* xref:connectors.adoc[Connectors list]
+* xref:contributing.adoc[Contributing]
diff --git a/docs/modules/ROOT/pages/about.adoc b/docs/modules/ROOT/pages/about.adoc
new file mode 100644
index 0000000..80f6ccd
--- /dev/null
+++ b/docs/modules/ROOT/pages/about.adoc
@@ -0,0 +1,8 @@
+[[WhatIsIt-WhatIsIt]]
+= What is Camel-Kafka-connector project?
+
+Camel Kafka Connector allows you to use all Camel xref:components::index.adoc[components] as http://kafka.apache.org/documentation/#connect[Kafka Connect] connectors.
+
+The basic idea is reusing the available Camel components as Kafka sink and source connectors in a simple way.
+
+  
diff --git a/docs/modules/ROOT/pages/connectors.adoc b/docs/modules/ROOT/pages/connectors.adoc
new file mode 100644
index 0000000..f91798e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors.adoc
@@ -0,0 +1,527 @@
+[[connectors-connectors]]
+= Supported connectors and documentation
+
+The connectors actually supported are actually the following:
+
+* xref:connectors/camel-activemq-kafka-source-connector.adoc[activemq-kafka-source-connector]
+* xref:connectors/camel-activemq-kafka-sink-connector.adoc[activemq-kafka-sink-connector]
+* xref:connectors/camel-ahc-kafka-sink-connector.adoc[ahc-kafka-sink-connector]
+* xref:connectors/camel-ahc-ws-kafka-source-connector.adoc[ahc-ws-kafka-source-connector]
+* xref:connectors/camel-ahc-ws-kafka-sink-connector.adoc[ahc-ws-kafka-sink-connector]
+* xref:connectors/camel-ahc-wss-kafka-source-connector.adoc[ahc-wss-kafka-source-connector]
+* xref:connectors/camel-ahc-wss-kafka-sink-connector.adoc[ahc-wss-kafka-sink-connector]
+* xref:connectors/camel-amqp-kafka-source-connector.adoc[amqp-kafka-source-connector]
+* xref:connectors/camel-amqp-kafka-sink-connector.adoc[amqp-kafka-sink-connector]
+* xref:connectors/camel-apns-kafka-source-connector.adoc[apns-kafka-source-connector]
+* xref:connectors/camel-apns-kafka-sink-connector.adoc[apns-kafka-sink-connector]
+* xref:connectors/camel-as2-kafka-source-connector.adoc[as2-kafka-source-connector]
+* xref:connectors/camel-as2-kafka-sink-connector.adoc[as2-kafka-sink-connector]
+* xref:connectors/camel-asterisk-kafka-source-connector.adoc[asterisk-kafka-source-connector]
+* xref:connectors/camel-asterisk-kafka-sink-connector.adoc[asterisk-kafka-sink-connector]
+* xref:connectors/camel-atmos-kafka-source-connector.adoc[atmos-kafka-source-connector]
+* xref:connectors/camel-atmos-kafka-sink-connector.adoc[atmos-kafka-sink-connector]
+* xref:connectors/camel-atmosphere-websocket-kafka-source-connector.adoc[atmosphere-websocket-kafka-source-connector]
+* xref:connectors/camel-atmosphere-websocket-kafka-sink-connector.adoc[atmosphere-websocket-kafka-sink-connector]
+* xref:connectors/camel-atom-kafka-source-connector.adoc[atom-kafka-source-connector]
+* xref:connectors/camel-atomix-map-kafka-source-connector.adoc[atomix-map-kafka-source-connector]
+* xref:connectors/camel-atomix-map-kafka-sink-connector.adoc[atomix-map-kafka-sink-connector]
+* xref:connectors/camel-atomix-messaging-kafka-source-connector.adoc[atomix-messaging-kafka-source-connector]
+* xref:connectors/camel-atomix-messaging-kafka-sink-connector.adoc[atomix-messaging-kafka-sink-connector]
+* xref:connectors/camel-atomix-multimap-kafka-sink-connector.adoc[atomix-multimap-kafka-sink-connector]
+* xref:connectors/camel-atomix-queue-kafka-source-connector.adoc[atomix-queue-kafka-source-connector]
+* xref:connectors/camel-atomix-queue-kafka-sink-connector.adoc[atomix-queue-kafka-sink-connector]
+* xref:connectors/camel-atomix-set-kafka-source-connector.adoc[atomix-set-kafka-source-connector]
+* xref:connectors/camel-atomix-set-kafka-sink-connector.adoc[atomix-set-kafka-sink-connector]
+* xref:connectors/camel-atomix-value-kafka-source-connector.adoc[atomix-value-kafka-source-connector]
+* xref:connectors/camel-atomix-value-kafka-sink-connector.adoc[atomix-value-kafka-sink-connector]
+* xref:connectors/camel-avro-kafka-source-connector.adoc[avro-kafka-source-connector]
+* xref:connectors/camel-avro-kafka-sink-connector.adoc[avro-kafka-sink-connector]
+* xref:connectors/camel-aws-cw-kafka-sink-connector.adoc[aws-cw-kafka-sink-connector]
+* xref:connectors/camel-aws-ddb-kafka-sink-connector.adoc[aws-ddb-kafka-sink-connector]
+* xref:connectors/camel-aws-ddbstream-kafka-source-connector.adoc[aws-ddbstream-kafka-source-connector]
+* xref:connectors/camel-aws-ec2-kafka-sink-connector.adoc[aws-ec2-kafka-sink-connector]
+* xref:connectors/camel-aws-ecs-kafka-sink-connector.adoc[aws-ecs-kafka-sink-connector]
+* xref:connectors/camel-aws-eks-kafka-sink-connector.adoc[aws-eks-kafka-sink-connector]
+* xref:connectors/camel-aws-iam-kafka-sink-connector.adoc[aws-iam-kafka-sink-connector]
+* xref:connectors/camel-aws-kinesis-kafka-source-connector.adoc[aws-kinesis-kafka-source-connector]
+* xref:connectors/camel-aws-kinesis-kafka-sink-connector.adoc[aws-kinesis-kafka-sink-connector]
+* xref:connectors/camel-aws-kinesis-firehose-kafka-sink-connector.adoc[aws-kinesis-firehose-kafka-sink-connector]
+* xref:connectors/camel-aws-kms-kafka-sink-connector.adoc[aws-kms-kafka-sink-connector]
+* xref:connectors/camel-aws-lambda-kafka-sink-connector.adoc[aws-lambda-kafka-sink-connector]
+* xref:connectors/camel-aws-mq-kafka-sink-connector.adoc[aws-mq-kafka-sink-connector]
+* xref:connectors/camel-aws-msk-kafka-sink-connector.adoc[aws-msk-kafka-sink-connector]
+* xref:connectors/camel-aws-s3-kafka-source-connector.adoc[aws-s3-kafka-source-connector]
+* xref:connectors/camel-aws-s3-kafka-sink-connector.adoc[aws-s3-kafka-sink-connector]
+* xref:connectors/camel-aws-sdb-kafka-sink-connector.adoc[aws-sdb-kafka-sink-connector]
+* xref:connectors/camel-aws-ses-kafka-sink-connector.adoc[aws-ses-kafka-sink-connector]
+* xref:connectors/camel-aws-sns-kafka-sink-connector.adoc[aws-sns-kafka-sink-connector]
+* xref:connectors/camel-aws-sqs-kafka-source-connector.adoc[aws-sqs-kafka-source-connector]
+* xref:connectors/camel-aws-sqs-kafka-sink-connector.adoc[aws-sqs-kafka-sink-connector]
+* xref:connectors/camel-aws-swf-kafka-source-connector.adoc[aws-swf-kafka-source-connector]
+* xref:connectors/camel-aws-swf-kafka-sink-connector.adoc[aws-swf-kafka-sink-connector]
+* xref:connectors/camel-aws-translate-kafka-sink-connector.adoc[aws-translate-kafka-sink-connector]
+* xref:connectors/camel-aws2-cw-kafka-sink-connector.adoc[aws2-cw-kafka-sink-connector]
+* xref:connectors/camel-aws2-ddb-kafka-sink-connector.adoc[aws2-ddb-kafka-sink-connector]
+* xref:connectors/camel-aws2-ddbstream-kafka-source-connector.adoc[aws2-ddbstream-kafka-source-connector]
+* xref:connectors/camel-aws2-ec2-kafka-sink-connector.adoc[aws2-ec2-kafka-sink-connector]
+* xref:connectors/camel-aws2-ecs-kafka-sink-connector.adoc[aws2-ecs-kafka-sink-connector]
+* xref:connectors/camel-aws2-eks-kafka-sink-connector.adoc[aws2-eks-kafka-sink-connector]
+* xref:connectors/camel-aws2-iam-kafka-sink-connector.adoc[aws2-iam-kafka-sink-connector]
+* xref:connectors/camel-aws2-kms-kafka-sink-connector.adoc[aws2-kms-kafka-sink-connector]
+* xref:connectors/camel-aws2-mq-kafka-sink-connector.adoc[aws2-mq-kafka-sink-connector]
+* xref:connectors/camel-aws2-msk-kafka-sink-connector.adoc[aws2-msk-kafka-sink-connector]
+* xref:connectors/camel-aws2-ses-kafka-sink-connector.adoc[aws2-ses-kafka-sink-connector]
+* xref:connectors/camel-aws2-sns-kafka-sink-connector.adoc[aws2-sns-kafka-sink-connector]
+* xref:connectors/camel-aws2-sqs-kafka-source-connector.adoc[aws2-sqs-kafka-source-connector]
+* xref:connectors/camel-aws2-sqs-kafka-sink-connector.adoc[aws2-sqs-kafka-sink-connector]
+* xref:connectors/camel-aws2-translate-kafka-sink-connector.adoc[aws2-translate-kafka-sink-connector]
+* xref:connectors/camel-azure-blob-kafka-source-connector.adoc[azure-blob-kafka-source-connector]
+* xref:connectors/camel-azure-blob-kafka-sink-connector.adoc[azure-blob-kafka-sink-connector]
+* xref:connectors/camel-azure-queue-kafka-source-connector.adoc[azure-queue-kafka-source-connector]
+* xref:connectors/camel-azure-queue-kafka-sink-connector.adoc[azure-queue-kafka-sink-connector]
+* xref:connectors/camel-bean-kafka-sink-connector.adoc[bean-kafka-sink-connector]
+* xref:connectors/camel-bean-validator-kafka-sink-connector.adoc[bean-validator-kafka-sink-connector]
+* xref:connectors/camel-beanstalk-kafka-source-connector.adoc[beanstalk-kafka-source-connector]
+* xref:connectors/camel-beanstalk-kafka-sink-connector.adoc[beanstalk-kafka-sink-connector]
+* xref:connectors/camel-bonita-kafka-sink-connector.adoc[bonita-kafka-sink-connector]
+* xref:connectors/camel-box-kafka-source-connector.adoc[box-kafka-source-connector]
+* xref:connectors/camel-box-kafka-sink-connector.adoc[box-kafka-sink-connector]
+* xref:connectors/camel-braintree-kafka-source-connector.adoc[braintree-kafka-source-connector]
+* xref:connectors/camel-braintree-kafka-sink-connector.adoc[braintree-kafka-sink-connector]
+* xref:connectors/camel-browse-kafka-source-connector.adoc[browse-kafka-source-connector]
+* xref:connectors/camel-browse-kafka-sink-connector.adoc[browse-kafka-sink-connector]
+* xref:connectors/camel-caffeine-cache-kafka-sink-connector.adoc[caffeine-cache-kafka-sink-connector]
+* xref:connectors/camel-caffeine-loadcache-kafka-sink-connector.adoc[caffeine-loadcache-kafka-sink-connector]
+* xref:connectors/camel-chatscript-kafka-sink-connector.adoc[chatscript-kafka-sink-connector]
+* xref:connectors/camel-chunk-kafka-sink-connector.adoc[chunk-kafka-sink-connector]
+* xref:connectors/camel-class-kafka-sink-connector.adoc[class-kafka-sink-connector]
+* xref:connectors/camel-cm-sms-kafka-sink-connector.adoc[cm-sms-kafka-sink-connector]
+* xref:connectors/camel-cmis-kafka-source-connector.adoc[cmis-kafka-source-connector]
+* xref:connectors/camel-cmis-kafka-sink-connector.adoc[cmis-kafka-sink-connector]
+* xref:connectors/camel-coap-kafka-source-connector.adoc[coap-kafka-source-connector]
+* xref:connectors/camel-coap-kafka-sink-connector.adoc[coap-kafka-sink-connector]
+* xref:connectors/camel-coap+tcp-kafka-source-connector.adoc[coap+tcp-kafka-source-connector]
+* xref:connectors/camel-coap+tcp-kafka-sink-connector.adoc[coap+tcp-kafka-sink-connector]
+* xref:connectors/camel-coaps-kafka-source-connector.adoc[coaps-kafka-source-connector]
+* xref:connectors/camel-coaps-kafka-sink-connector.adoc[coaps-kafka-sink-connector]
+* xref:connectors/camel-coaps+tcp-kafka-source-connector.adoc[coaps+tcp-kafka-source-connector]
+* xref:connectors/camel-coaps+tcp-kafka-sink-connector.adoc[coaps+tcp-kafka-sink-connector]
+* xref:connectors/camel-cometd-kafka-source-connector.adoc[cometd-kafka-source-connector]
+* xref:connectors/camel-cometd-kafka-sink-connector.adoc[cometd-kafka-sink-connector]
+* xref:connectors/camel-cometds-kafka-source-connector.adoc[cometds-kafka-source-connector]
+* xref:connectors/camel-cometds-kafka-sink-connector.adoc[cometds-kafka-sink-connector]
+* xref:connectors/camel-consul-kafka-source-connector.adoc[consul-kafka-source-connector]
+* xref:connectors/camel-consul-kafka-sink-connector.adoc[consul-kafka-sink-connector]
+* xref:connectors/camel-controlbus-kafka-sink-connector.adoc[controlbus-kafka-sink-connector]
+* xref:connectors/camel-corda-kafka-source-connector.adoc[corda-kafka-source-connector]
+* xref:connectors/camel-corda-kafka-sink-connector.adoc[corda-kafka-sink-connector]
+* xref:connectors/camel-couchbase-kafka-source-connector.adoc[couchbase-kafka-source-connector]
+* xref:connectors/camel-couchbase-kafka-sink-connector.adoc[couchbase-kafka-sink-connector]
+* xref:connectors/camel-couchdb-kafka-source-connector.adoc[couchdb-kafka-source-connector]
+* xref:connectors/camel-couchdb-kafka-sink-connector.adoc[couchdb-kafka-sink-connector]
+* xref:connectors/camel-cql-kafka-source-connector.adoc[cql-kafka-source-connector]
+* xref:connectors/camel-cql-kafka-sink-connector.adoc[cql-kafka-sink-connector]
+* xref:connectors/camel-cron-kafka-source-connector.adoc[cron-kafka-source-connector]
+* xref:connectors/camel-crypto-kafka-sink-connector.adoc[crypto-kafka-sink-connector]
+* xref:connectors/camel-crypto-cms-kafka-sink-connector.adoc[crypto-cms-kafka-sink-connector]
+* xref:connectors/camel-cxf-kafka-source-connector.adoc[cxf-kafka-source-connector]
+* xref:connectors/camel-cxf-kafka-sink-connector.adoc[cxf-kafka-sink-connector]
+* xref:connectors/camel-cxfrs-kafka-source-connector.adoc[cxfrs-kafka-source-connector]
+* xref:connectors/camel-cxfrs-kafka-sink-connector.adoc[cxfrs-kafka-sink-connector]
+* xref:connectors/camel-dataformat-kafka-sink-connector.adoc[dataformat-kafka-sink-connector]
+* xref:connectors/camel-dataset-kafka-source-connector.adoc[dataset-kafka-source-connector]
+* xref:connectors/camel-dataset-kafka-sink-connector.adoc[dataset-kafka-sink-connector]
+* xref:connectors/camel-dataset-test-kafka-sink-connector.adoc[dataset-test-kafka-sink-connector]
+* xref:connectors/camel-debezium-mongodb-kafka-source-connector.adoc[debezium-mongodb-kafka-source-connector]
+* xref:connectors/camel-debezium-mysql-kafka-source-connector.adoc[debezium-mysql-kafka-source-connector]
+* xref:connectors/camel-debezium-postgres-kafka-source-connector.adoc[debezium-postgres-kafka-source-connector]
+* xref:connectors/camel-debezium-sqlserver-kafka-source-connector.adoc[debezium-sqlserver-kafka-source-connector]
+* xref:connectors/camel-digitalocean-kafka-sink-connector.adoc[digitalocean-kafka-sink-connector]
+* xref:connectors/camel-direct-kafka-source-connector.adoc[direct-kafka-source-connector]
+* xref:connectors/camel-direct-kafka-sink-connector.adoc[direct-kafka-sink-connector]
+* xref:connectors/camel-direct-vm-kafka-source-connector.adoc[direct-vm-kafka-source-connector]
+* xref:connectors/camel-direct-vm-kafka-sink-connector.adoc[direct-vm-kafka-sink-connector]
+* xref:connectors/camel-disruptor-kafka-source-connector.adoc[disruptor-kafka-source-connector]
+* xref:connectors/camel-disruptor-kafka-sink-connector.adoc[disruptor-kafka-sink-connector]
+* xref:connectors/camel-disruptor-vm-kafka-source-connector.adoc[disruptor-vm-kafka-source-connector]
+* xref:connectors/camel-disruptor-vm-kafka-sink-connector.adoc[disruptor-vm-kafka-sink-connector]
+* xref:connectors/camel-dns-kafka-sink-connector.adoc[dns-kafka-sink-connector]
+* xref:connectors/camel-docker-kafka-source-connector.adoc[docker-kafka-source-connector]
+* xref:connectors/camel-docker-kafka-sink-connector.adoc[docker-kafka-sink-connector]
+* xref:connectors/camel-dozer-kafka-sink-connector.adoc[dozer-kafka-sink-connector]
+* xref:connectors/camel-drill-kafka-sink-connector.adoc[drill-kafka-sink-connector]
+* xref:connectors/camel-dropbox-kafka-source-connector.adoc[dropbox-kafka-source-connector]
+* xref:connectors/camel-dropbox-kafka-sink-connector.adoc[dropbox-kafka-sink-connector]
+* xref:connectors/camel-ehcache-kafka-source-connector.adoc[ehcache-kafka-source-connector]
+* xref:connectors/camel-ehcache-kafka-sink-connector.adoc[ehcache-kafka-sink-connector]
+* xref:connectors/camel-elasticsearch-rest-kafka-sink-connector.adoc[elasticsearch-rest-kafka-sink-connector]
+* xref:connectors/camel-elsql-kafka-source-connector.adoc[elsql-kafka-source-connector]
+* xref:connectors/camel-elsql-kafka-sink-connector.adoc[elsql-kafka-sink-connector]
+* xref:connectors/camel-elytron-kafka-source-connector.adoc[elytron-kafka-source-connector]
+* xref:connectors/camel-elytron-kafka-sink-connector.adoc[elytron-kafka-sink-connector]
+* xref:connectors/camel-etcd-keys-kafka-sink-connector.adoc[etcd-keys-kafka-sink-connector]
+* xref:connectors/camel-etcd-stats-kafka-source-connector.adoc[etcd-stats-kafka-source-connector]
+* xref:connectors/camel-etcd-stats-kafka-sink-connector.adoc[etcd-stats-kafka-sink-connector]
+* xref:connectors/camel-etcd-watch-kafka-source-connector.adoc[etcd-watch-kafka-source-connector]
+* xref:connectors/camel-eventadmin-kafka-source-connector.adoc[eventadmin-kafka-source-connector]
+* xref:connectors/camel-eventadmin-kafka-sink-connector.adoc[eventadmin-kafka-sink-connector]
+* xref:connectors/camel-exec-kafka-sink-connector.adoc[exec-kafka-sink-connector]
+* xref:connectors/camel-facebook-kafka-source-connector.adoc[facebook-kafka-source-connector]
+* xref:connectors/camel-facebook-kafka-sink-connector.adoc[facebook-kafka-sink-connector]
+* xref:connectors/camel-fhir-kafka-source-connector.adoc[fhir-kafka-source-connector]
+* xref:connectors/camel-fhir-kafka-sink-connector.adoc[fhir-kafka-sink-connector]
+* xref:connectors/camel-file-kafka-source-connector.adoc[file-kafka-source-connector]
+* xref:connectors/camel-file-kafka-sink-connector.adoc[file-kafka-sink-connector]
+* xref:connectors/camel-file-watch-kafka-source-connector.adoc[file-watch-kafka-source-connector]
+* xref:connectors/camel-flatpack-kafka-source-connector.adoc[flatpack-kafka-source-connector]
+* xref:connectors/camel-flatpack-kafka-sink-connector.adoc[flatpack-kafka-sink-connector]
+* xref:connectors/camel-flink-kafka-sink-connector.adoc[flink-kafka-sink-connector]
+* xref:connectors/camel-fop-kafka-sink-connector.adoc[fop-kafka-sink-connector]
+* xref:connectors/camel-freemarker-kafka-sink-connector.adoc[freemarker-kafka-sink-connector]
+* xref:connectors/camel-ftp-kafka-source-connector.adoc[ftp-kafka-source-connector]
+* xref:connectors/camel-ftp-kafka-sink-connector.adoc[ftp-kafka-sink-connector]
+* xref:connectors/camel-ftps-kafka-source-connector.adoc[ftps-kafka-source-connector]
+* xref:connectors/camel-ftps-kafka-sink-connector.adoc[ftps-kafka-sink-connector]
+* xref:connectors/camel-ganglia-kafka-sink-connector.adoc[ganglia-kafka-sink-connector]
+* xref:connectors/camel-geocoder-kafka-sink-connector.adoc[geocoder-kafka-sink-connector]
+* xref:connectors/camel-git-kafka-source-connector.adoc[git-kafka-source-connector]
+* xref:connectors/camel-git-kafka-sink-connector.adoc[git-kafka-sink-connector]
+* xref:connectors/camel-github-kafka-source-connector.adoc[github-kafka-source-connector]
+* xref:connectors/camel-github-kafka-sink-connector.adoc[github-kafka-sink-connector]
+* xref:connectors/camel-google-bigquery-kafka-sink-connector.adoc[google-bigquery-kafka-sink-connector]
+* xref:connectors/camel-google-bigquery-sql-kafka-sink-connector.adoc[google-bigquery-sql-kafka-sink-connector]
+* xref:connectors/camel-google-calendar-kafka-source-connector.adoc[google-calendar-kafka-source-connector]
+* xref:connectors/camel-google-calendar-kafka-sink-connector.adoc[google-calendar-kafka-sink-connector]
+* xref:connectors/camel-google-calendar-stream-kafka-source-connector.adoc[google-calendar-stream-kafka-source-connector]
+* xref:connectors/camel-google-drive-kafka-source-connector.adoc[google-drive-kafka-source-connector]
+* xref:connectors/camel-google-drive-kafka-sink-connector.adoc[google-drive-kafka-sink-connector]
+* xref:connectors/camel-google-mail-kafka-source-connector.adoc[google-mail-kafka-source-connector]
+* xref:connectors/camel-google-mail-kafka-sink-connector.adoc[google-mail-kafka-sink-connector]
+* xref:connectors/camel-google-mail-stream-kafka-source-connector.adoc[google-mail-stream-kafka-source-connector]
+* xref:connectors/camel-google-pubsub-kafka-source-connector.adoc[google-pubsub-kafka-source-connector]
+* xref:connectors/camel-google-pubsub-kafka-sink-connector.adoc[google-pubsub-kafka-sink-connector]
+* xref:connectors/camel-google-sheets-kafka-source-connector.adoc[google-sheets-kafka-source-connector]
+* xref:connectors/camel-google-sheets-kafka-sink-connector.adoc[google-sheets-kafka-sink-connector]
+* xref:connectors/camel-google-sheets-stream-kafka-source-connector.adoc[google-sheets-stream-kafka-source-connector]
+* xref:connectors/camel-gora-kafka-source-connector.adoc[gora-kafka-source-connector]
+* xref:connectors/camel-gora-kafka-sink-connector.adoc[gora-kafka-sink-connector]
+* xref:connectors/camel-grape-kafka-sink-connector.adoc[grape-kafka-sink-connector]
+* xref:connectors/camel-graphql-kafka-sink-connector.adoc[graphql-kafka-sink-connector]
+* xref:connectors/camel-grpc-kafka-source-connector.adoc[grpc-kafka-source-connector]
+* xref:connectors/camel-grpc-kafka-sink-connector.adoc[grpc-kafka-sink-connector]
+* xref:connectors/camel-guava-eventbus-kafka-source-connector.adoc[guava-eventbus-kafka-source-connector]
+* xref:connectors/camel-guava-eventbus-kafka-sink-connector.adoc[guava-eventbus-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc[hazelcast-atomicvalue-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-instance-kafka-source-connector.adoc[hazelcast-instance-kafka-source-connector]
+* xref:connectors/camel-hazelcast-list-kafka-source-connector.adoc[hazelcast-list-kafka-source-connector]
+* xref:connectors/camel-hazelcast-list-kafka-sink-connector.adoc[hazelcast-list-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-map-kafka-source-connector.adoc[hazelcast-map-kafka-source-connector]
+* xref:connectors/camel-hazelcast-map-kafka-sink-connector.adoc[hazelcast-map-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-multimap-kafka-source-connector.adoc[hazelcast-multimap-kafka-source-connector]
+* xref:connectors/camel-hazelcast-multimap-kafka-sink-connector.adoc[hazelcast-multimap-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-queue-kafka-source-connector.adoc[hazelcast-queue-kafka-source-connector]
+* xref:connectors/camel-hazelcast-queue-kafka-sink-connector.adoc[hazelcast-queue-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-replicatedmap-kafka-source-connector.adoc[hazelcast-replicatedmap-kafka-source-connector]
+* xref:connectors/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc[hazelcast-replicatedmap-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc[hazelcast-ringbuffer-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-seda-kafka-source-connector.adoc[hazelcast-seda-kafka-source-connector]
+* xref:connectors/camel-hazelcast-seda-kafka-sink-connector.adoc[hazelcast-seda-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-set-kafka-source-connector.adoc[hazelcast-set-kafka-source-connector]
+* xref:connectors/camel-hazelcast-set-kafka-sink-connector.adoc[hazelcast-set-kafka-sink-connector]
+* xref:connectors/camel-hazelcast-topic-kafka-source-connector.adoc[hazelcast-topic-kafka-source-connector]
+* xref:connectors/camel-hazelcast-topic-kafka-sink-connector.adoc[hazelcast-topic-kafka-sink-connector]
+* xref:connectors/camel-hbase-kafka-source-connector.adoc[hbase-kafka-source-connector]
+* xref:connectors/camel-hbase-kafka-sink-connector.adoc[hbase-kafka-sink-connector]
+* xref:connectors/camel-hdfs-kafka-source-connector.adoc[hdfs-kafka-source-connector]
+* xref:connectors/camel-hdfs-kafka-sink-connector.adoc[hdfs-kafka-sink-connector]
+* xref:connectors/camel-hipchat-kafka-source-connector.adoc[hipchat-kafka-source-connector]
+* xref:connectors/camel-hipchat-kafka-sink-connector.adoc[hipchat-kafka-sink-connector]
+* xref:connectors/camel-http-kafka-sink-connector.adoc[http-kafka-sink-connector]
+* xref:connectors/camel-https-kafka-sink-connector.adoc[https-kafka-sink-connector]
+* xref:connectors/camel-iec60870-client-kafka-source-connector.adoc[iec60870-client-kafka-source-connector]
+* xref:connectors/camel-iec60870-client-kafka-sink-connector.adoc[iec60870-client-kafka-sink-connector]
+* xref:connectors/camel-iec60870-server-kafka-source-connector.adoc[iec60870-server-kafka-source-connector]
+* xref:connectors/camel-iec60870-server-kafka-sink-connector.adoc[iec60870-server-kafka-sink-connector]
+* xref:connectors/camel-ignite-cache-kafka-source-connector.adoc[ignite-cache-kafka-source-connector]
+* xref:connectors/camel-ignite-cache-kafka-sink-connector.adoc[ignite-cache-kafka-sink-connector]
+* xref:connectors/camel-ignite-compute-kafka-sink-connector.adoc[ignite-compute-kafka-sink-connector]
+* xref:connectors/camel-ignite-events-kafka-source-connector.adoc[ignite-events-kafka-source-connector]
+* xref:connectors/camel-ignite-idgen-kafka-sink-connector.adoc[ignite-idgen-kafka-sink-connector]
+* xref:connectors/camel-ignite-messaging-kafka-source-connector.adoc[ignite-messaging-kafka-source-connector]
+* xref:connectors/camel-ignite-messaging-kafka-sink-connector.adoc[ignite-messaging-kafka-sink-connector]
+* xref:connectors/camel-ignite-queue-kafka-sink-connector.adoc[ignite-queue-kafka-sink-connector]
+* xref:connectors/camel-imap-kafka-source-connector.adoc[imap-kafka-source-connector]
+* xref:connectors/camel-imap-kafka-sink-connector.adoc[imap-kafka-sink-connector]
+* xref:connectors/camel-ignite-set-kafka-sink-connector.adoc[ignite-set-kafka-sink-connector]
+* xref:connectors/camel-imaps-kafka-source-connector.adoc[imaps-kafka-source-connector]
+* xref:connectors/camel-imaps-kafka-sink-connector.adoc[imaps-kafka-sink-connector]
+* xref:connectors/camel-infinispan-kafka-source-connector.adoc[infinispan-kafka-source-connector]
+* xref:connectors/camel-infinispan-kafka-sink-connector.adoc[infinispan-kafka-sink-connector]
+* xref:connectors/camel-influxdb-kafka-sink-connector.adoc[influxdb-kafka-sink-connector]
+* xref:connectors/camel-iota-kafka-sink-connector.adoc[iota-kafka-sink-connector]
+* xref:connectors/camel-ipfs-kafka-sink-connector.adoc[ipfs-kafka-sink-connector]
+* xref:connectors/camel-irc-kafka-source-connector.adoc[irc-kafka-source-connector]
+* xref:connectors/camel-irc-kafka-sink-connector.adoc[irc-kafka-sink-connector]
+* xref:connectors/camel-ironmq-kafka-source-connector.adoc[ironmq-kafka-source-connector]
+* xref:connectors/camel-ironmq-kafka-sink-connector.adoc[ironmq-kafka-sink-connector]
+* xref:connectors/camel-jbpm-kafka-source-connector.adoc[jbpm-kafka-source-connector]
+* xref:connectors/camel-jbpm-kafka-sink-connector.adoc[jbpm-kafka-sink-connector]
+* xref:connectors/camel-jcache-kafka-source-connector.adoc[jcache-kafka-source-connector]
+* xref:connectors/camel-jcache-kafka-sink-connector.adoc[jcache-kafka-sink-connector]
+* xref:connectors/camel-jclouds-kafka-source-connector.adoc[jclouds-kafka-source-connector]
+* xref:connectors/camel-jclouds-kafka-sink-connector.adoc[jclouds-kafka-sink-connector]
+* xref:connectors/camel-jcr-kafka-source-connector.adoc[jcr-kafka-source-connector]
+* xref:connectors/camel-jcr-kafka-sink-connector.adoc[jcr-kafka-sink-connector]
+* xref:connectors/camel-jdbc-kafka-sink-connector.adoc[jdbc-kafka-sink-connector]
+* xref:connectors/camel-jetty-kafka-source-connector.adoc[jetty-kafka-source-connector]
+* xref:connectors/camel-jgroups-kafka-source-connector.adoc[jgroups-kafka-source-connector]
+* xref:connectors/camel-jgroups-kafka-sink-connector.adoc[jgroups-kafka-sink-connector]
+* xref:connectors/camel-jgroups-raft-kafka-source-connector.adoc[jgroups-raft-kafka-source-connector]
+* xref:connectors/camel-jgroups-raft-kafka-sink-connector.adoc[jgroups-raft-kafka-sink-connector]
+* xref:connectors/camel-jing-kafka-sink-connector.adoc[jing-kafka-sink-connector]
+* xref:connectors/camel-jira-kafka-source-connector.adoc[jira-kafka-source-connector]
+* xref:connectors/camel-jira-kafka-sink-connector.adoc[jira-kafka-sink-connector]
+* xref:connectors/camel-jms-kafka-source-connector.adoc[jms-kafka-source-connector]
+* xref:connectors/camel-jms-kafka-sink-connector.adoc[jms-kafka-sink-connector]
+* xref:connectors/camel-jmx-kafka-source-connector.adoc[jmx-kafka-source-connector]
+* xref:connectors/camel-jolt-kafka-sink-connector.adoc[jolt-kafka-sink-connector]
+* xref:connectors/camel-jooq-kafka-source-connector.adoc[jooq-kafka-source-connector]
+* xref:connectors/camel-jooq-kafka-sink-connector.adoc[jooq-kafka-sink-connector]
+* xref:connectors/camel-jpa-kafka-source-connector.adoc[jpa-kafka-source-connector]
+* xref:connectors/camel-jpa-kafka-sink-connector.adoc[jpa-kafka-sink-connector]
+* xref:connectors/camel-jslt-kafka-sink-connector.adoc[jslt-kafka-sink-connector]
+* xref:connectors/camel-json-validator-kafka-sink-connector.adoc[json-validator-kafka-sink-connector]
+* xref:connectors/camel-jt400-kafka-source-connector.adoc[jt400-kafka-source-connector]
+* xref:connectors/camel-jt400-kafka-sink-connector.adoc[jt400-kafka-sink-connector]
+* xref:connectors/camel-kafka-kafka-source-connector.adoc[kafka-kafka-source-connector]
+* xref:connectors/camel-kafka-kafka-sink-connector.adoc[kafka-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-config-maps-kafka-sink-connector.adoc[kubernetes-config-maps-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-deployments-kafka-source-connector.adoc[kubernetes-deployments-kafka-source-connector]
+* xref:connectors/camel-kubernetes-deployments-kafka-sink-connector.adoc[kubernetes-deployments-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-hpa-kafka-source-connector.adoc[kubernetes-hpa-kafka-source-connector]
+* xref:connectors/camel-kubernetes-hpa-kafka-sink-connector.adoc[kubernetes-hpa-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-job-kafka-source-connector.adoc[kubernetes-job-kafka-source-connector]
+* xref:connectors/camel-kubernetes-job-kafka-sink-connector.adoc[kubernetes-job-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-namespaces-kafka-source-connector.adoc[kubernetes-namespaces-kafka-source-connector]
+* xref:connectors/camel-kubernetes-namespaces-kafka-sink-connector.adoc[kubernetes-namespaces-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-nodes-kafka-source-connector.adoc[kubernetes-nodes-kafka-source-connector]
+* xref:connectors/camel-kubernetes-nodes-kafka-sink-connector.adoc[kubernetes-nodes-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc[kubernetes-persistent-volumes-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc[kubernetes-persistent-volumes-claims-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-pods-kafka-source-connector.adoc[kubernetes-pods-kafka-source-connector]
+* xref:connectors/camel-kubernetes-pods-kafka-sink-connector.adoc[kubernetes-pods-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-replication-controllers-kafka-source-connector.adoc[kubernetes-replication-controllers-kafka-source-connector]
+* xref:connectors/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc[kubernetes-replication-controllers-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-resources-quota-kafka-sink-connector.adoc[kubernetes-resources-quota-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-secrets-kafka-sink-connector.adoc[kubernetes-secrets-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-service-accounts-kafka-sink-connector.adoc[kubernetes-service-accounts-kafka-sink-connector]
+* xref:connectors/camel-kubernetes-services-kafka-source-connector.adoc[kubernetes-services-kafka-source-connector]
+* xref:connectors/camel-kubernetes-services-kafka-sink-connector.adoc[kubernetes-services-kafka-sink-connector]
+* xref:connectors/camel-kudu-kafka-sink-connector.adoc[kudu-kafka-sink-connector]
+* xref:connectors/camel-language-kafka-sink-connector.adoc[language-kafka-sink-connector]
+* xref:connectors/camel-ldap-kafka-sink-connector.adoc[ldap-kafka-sink-connector]
+* xref:connectors/camel-ldif-kafka-sink-connector.adoc[ldif-kafka-sink-connector]
+* xref:connectors/camel-log-kafka-sink-connector.adoc[log-kafka-sink-connector]
+* xref:connectors/camel-lpr-kafka-sink-connector.adoc[lpr-kafka-sink-connector]
+* xref:connectors/camel-lucene-kafka-sink-connector.adoc[lucene-kafka-sink-connector]
+* xref:connectors/camel-lumberjack-kafka-source-connector.adoc[lumberjack-kafka-source-connector]
+* xref:connectors/camel-master-kafka-source-connector.adoc[master-kafka-source-connector]
+* xref:connectors/camel-metrics-kafka-sink-connector.adoc[metrics-kafka-sink-connector]
+* xref:connectors/camel-micrometer-kafka-sink-connector.adoc[micrometer-kafka-sink-connector]
+* xref:connectors/camel-microprofile-metrics-kafka-sink-connector.adoc[microprofile-metrics-kafka-sink-connector]
+* xref:connectors/camel-milo-client-kafka-source-connector.adoc[milo-client-kafka-source-connector]
+* xref:connectors/camel-milo-client-kafka-sink-connector.adoc[milo-client-kafka-sink-connector]
+* xref:connectors/camel-milo-server-kafka-source-connector.adoc[milo-server-kafka-source-connector]
+* xref:connectors/camel-milo-server-kafka-sink-connector.adoc[milo-server-kafka-sink-connector]
+* xref:connectors/camel-mina-kafka-source-connector.adoc[mina-kafka-source-connector]
+* xref:connectors/camel-mina-kafka-sink-connector.adoc[mina-kafka-sink-connector]
+* xref:connectors/camel-mllp-kafka-source-connector.adoc[mllp-kafka-source-connector]
+* xref:connectors/camel-mllp-kafka-sink-connector.adoc[mllp-kafka-sink-connector]
+* xref:connectors/camel-mock-kafka-sink-connector.adoc[mock-kafka-sink-connector]
+* xref:connectors/camel-mongodb-kafka-source-connector.adoc[mongodb-kafka-source-connector]
+* xref:connectors/camel-mongodb-kafka-sink-connector.adoc[mongodb-kafka-sink-connector]
+* xref:connectors/camel-mongodb-gridfs-kafka-source-connector.adoc[mongodb-gridfs-kafka-source-connector]
+* xref:connectors/camel-mongodb-gridfs-kafka-sink-connector.adoc[mongodb-gridfs-kafka-sink-connector]
+* xref:connectors/camel-msv-kafka-sink-connector.adoc[msv-kafka-sink-connector]
+* xref:connectors/camel-mustache-kafka-sink-connector.adoc[mustache-kafka-sink-connector]
+* xref:connectors/camel-mvel-kafka-sink-connector.adoc[mvel-kafka-sink-connector]
+* xref:connectors/camel-mybatis-kafka-source-connector.adoc[mybatis-kafka-source-connector]
+* xref:connectors/camel-mybatis-kafka-sink-connector.adoc[mybatis-kafka-sink-connector]
+* xref:connectors/camel-mybatis-bean-kafka-sink-connector.adoc[mybatis-bean-kafka-sink-connector]
+* xref:connectors/camel-nagios-kafka-sink-connector.adoc[nagios-kafka-sink-connector]
+* xref:connectors/camel-nats-kafka-source-connector.adoc[nats-kafka-source-connector]
+* xref:connectors/camel-nats-kafka-sink-connector.adoc[nats-kafka-sink-connector]
+* xref:connectors/camel-netty-kafka-source-connector.adoc[netty-kafka-source-connector]
+* xref:connectors/camel-netty-kafka-sink-connector.adoc[netty-kafka-sink-connector]
+* xref:connectors/camel-netty-http-kafka-source-connector.adoc[netty-http-kafka-source-connector]
+* xref:connectors/camel-netty-http-kafka-sink-connector.adoc[netty-http-kafka-sink-connector]
+* xref:connectors/camel-nitrite-kafka-source-connector.adoc[nitrite-kafka-source-connector]
+* xref:connectors/camel-nitrite-kafka-sink-connector.adoc[nitrite-kafka-sink-connector]
+* xref:connectors/camel-nsq-kafka-source-connector.adoc[nsq-kafka-source-connector]
+* xref:connectors/camel-nsq-kafka-sink-connector.adoc[nsq-kafka-sink-connector]
+* xref:connectors/camel-olingo2-kafka-source-connector.adoc[olingo2-kafka-source-connector]
+* xref:connectors/camel-olingo2-kafka-sink-connector.adoc[olingo2-kafka-sink-connector]
+* xref:connectors/camel-olingo4-kafka-source-connector.adoc[olingo4-kafka-source-connector]
+* xref:connectors/camel-olingo4-kafka-sink-connector.adoc[olingo4-kafka-sink-connector]
+* xref:connectors/camel-openshift-build-configs-kafka-sink-connector.adoc[openshift-build-configs-kafka-sink-connector]
+* xref:connectors/camel-openshift-builds-kafka-sink-connector.adoc[openshift-builds-kafka-sink-connector]
+* xref:connectors/camel-openstack-cinder-kafka-sink-connector.adoc[openstack-cinder-kafka-sink-connector]
+* xref:connectors/camel-openstack-glance-kafka-sink-connector.adoc[openstack-glance-kafka-sink-connector]
+* xref:connectors/camel-openstack-keystone-kafka-sink-connector.adoc[openstack-keystone-kafka-sink-connector]
+* xref:connectors/camel-openstack-neutron-kafka-sink-connector.adoc[openstack-neutron-kafka-sink-connector]
+* xref:connectors/camel-openstack-nova-kafka-sink-connector.adoc[openstack-nova-kafka-sink-connector]
+* xref:connectors/camel-openstack-swift-kafka-sink-connector.adoc[openstack-swift-kafka-sink-connector]
+* xref:connectors/camel-optaplanner-kafka-source-connector.adoc[optaplanner-kafka-source-connector]
+* xref:connectors/camel-optaplanner-kafka-sink-connector.adoc[optaplanner-kafka-sink-connector]
+* xref:connectors/camel-paho-kafka-source-connector.adoc[paho-kafka-source-connector]
+* xref:connectors/camel-paho-kafka-sink-connector.adoc[paho-kafka-sink-connector]
+* xref:connectors/camel-paxlogging-kafka-source-connector.adoc[paxlogging-kafka-source-connector]
+* xref:connectors/camel-pdf-kafka-sink-connector.adoc[pdf-kafka-sink-connector]
+* xref:connectors/camel-xquery-kafka-source-connector.adoc[xquery-kafka-source-connector]
+* xref:connectors/camel-xquery-kafka-sink-connector.adoc[xquery-kafka-sink-connector]
+* xref:connectors/camel-xslt-kafka-sink-connector.adoc[xslt-kafka-sink-connector]
+* xref:connectors/camel-xslt-saxon-kafka-sink-connector.adoc[xslt-saxon-kafka-sink-connector]
+* xref:connectors/camel-yammer-kafka-source-connector.adoc[yammer-kafka-source-connector]
+* xref:connectors/camel-yammer-kafka-sink-connector.adoc[yammer-kafka-sink-connector]
+* xref:connectors/camel-zendesk-kafka-source-connector.adoc[zendesk-kafka-source-connector]
+* xref:connectors/camel-zendesk-kafka-sink-connector.adoc[zendesk-kafka-sink-connector]
+* xref:connectors/camel-zookeeper-kafka-source-connector.adoc[zookeeper-kafka-source-connector]
+* xref:connectors/camel-zookeeper-kafka-sink-connector.adoc[zookeeper-kafka-sink-connector]
+* xref:connectors/camel-zookeeper-master-kafka-source-connector.adoc[zookeeper-master-kafka-source-connector]
+* xref:connectors/camel-smtp-kafka-source-connector.adoc[smtp-kafka-source-connector]
+* xref:connectors/camel-smtp-kafka-sink-connector.adoc[smtp-kafka-sink-connector]
+* xref:connectors/camel-snmp-kafka-source-connector.adoc[snmp-kafka-source-connector]
+* xref:connectors/camel-snmp-kafka-sink-connector.adoc[snmp-kafka-sink-connector]
+* xref:connectors/camel-solrCloud-kafka-sink-connector.adoc[solrCloud-kafka-sink-connector]
+* xref:connectors/camel-soroush-kafka-source-connector.adoc[soroush-kafka-source-connector]
+* xref:connectors/camel-soroush-kafka-sink-connector.adoc[soroush-kafka-sink-connector]
+* xref:connectors/camel-spark-rest-kafka-source-connector.adoc[spark-rest-kafka-source-connector]
+* xref:connectors/camel-spring-batch-kafka-sink-connector.adoc[spring-batch-kafka-sink-connector]
+* xref:connectors/camel-spring-integration-kafka-source-connector.adoc[spring-integration-kafka-source-connector]
+* xref:connectors/camel-spring-integration-kafka-sink-connector.adoc[spring-integration-kafka-sink-connector]
+* xref:connectors/camel-spring-redis-kafka-source-connector.adoc[spring-redis-kafka-source-connector]
+* xref:connectors/camel-spring-redis-kafka-sink-connector.adoc[spring-redis-kafka-sink-connector]
+* xref:connectors/camel-sql-kafka-source-connector.adoc[sql-kafka-source-connector]
+* xref:connectors/camel-sql-kafka-sink-connector.adoc[sql-kafka-sink-connector]
+* xref:connectors/camel-ssh-kafka-source-connector.adoc[ssh-kafka-source-connector]
+* xref:connectors/camel-ssh-kafka-sink-connector.adoc[ssh-kafka-sink-connector]
+* xref:connectors/camel-stomp-kafka-source-connector.adoc[stomp-kafka-source-connector]
+* xref:connectors/camel-stomp-kafka-sink-connector.adoc[stomp-kafka-sink-connector]
+* xref:connectors/camel-string-template-kafka-sink-connector.adoc[string-template-kafka-sink-connector]
+* xref:connectors/camel-thrift-kafka-source-connector.adoc[thrift-kafka-source-connector]
+* xref:connectors/camel-thrift-kafka-sink-connector.adoc[thrift-kafka-sink-connector]
+* xref:connectors/camel-timer-kafka-source-connector.adoc[timer-kafka-source-connector]
+* xref:connectors/camel-twitter-directmessage-kafka-source-connector.adoc[twitter-directmessage-kafka-source-connector]
+* xref:connectors/camel-twitter-directmessage-kafka-sink-connector.adoc[twitter-directmessage-kafka-sink-connector]
+* xref:connectors/camel-twitter-timeline-kafka-source-connector.adoc[twitter-timeline-kafka-source-connector]
+* xref:connectors/camel-twitter-timeline-kafka-sink-connector.adoc[twitter-timeline-kafka-sink-connector]
+* xref:connectors/camel-validator-kafka-sink-connector.adoc[validator-kafka-sink-connector]
+* xref:connectors/camel-vertx-kafka-source-connector.adoc[vertx-kafka-source-connector]
+* xref:connectors/camel-vertx-kafka-sink-connector.adoc[vertx-kafka-sink-connector]
+* xref:connectors/camel-weather-kafka-source-connector.adoc[weather-kafka-source-connector]
+* xref:connectors/camel-weather-kafka-sink-connector.adoc[weather-kafka-sink-connector]
+* xref:connectors/camel-webhook-kafka-source-connector.adoc[webhook-kafka-source-connector]
+* xref:connectors/camel-websocket-jsr356-kafka-source-connector.adoc[websocket-jsr356-kafka-source-connector]
+* xref:connectors/camel-websocket-jsr356-kafka-sink-connector.adoc[websocket-jsr356-kafka-sink-connector]
+* xref:connectors/camel-wordpress-kafka-source-connector.adoc[wordpress-kafka-source-connector]
+* xref:connectors/camel-wordpress-kafka-sink-connector.adoc[wordpress-kafka-sink-connector]
+* xref:connectors/camel-xchange-kafka-sink-connector.adoc[xchange-kafka-sink-connector]
+* xref:connectors/camel-xmlsecurity-verify-kafka-sink-connector.adoc[xmlsecurity-verify-kafka-sink-connector]
+* xref:connectors/camel-pg-replication-slot-kafka-source-connector.adoc[pg-replication-slot-kafka-source-connector]
+* xref:connectors/camel-pgevent-kafka-source-connector.adoc[pgevent-kafka-source-connector]
+* xref:connectors/camel-pgevent-kafka-sink-connector.adoc[pgevent-kafka-sink-connector]
+* xref:connectors/camel-platform-http-kafka-source-connector.adoc[platform-http-kafka-source-connector]
+* xref:connectors/camel-pop3-kafka-source-connector.adoc[pop3-kafka-source-connector]
+* xref:connectors/camel-pop3-kafka-sink-connector.adoc[pop3-kafka-sink-connector]
+* xref:connectors/camel-pop3s-kafka-source-connector.adoc[pop3s-kafka-source-connector]
+* xref:connectors/camel-pop3s-kafka-sink-connector.adoc[pop3s-kafka-sink-connector]
+* xref:connectors/camel-pubnub-kafka-source-connector.adoc[pubnub-kafka-source-connector]
+* xref:connectors/camel-pubnub-kafka-sink-connector.adoc[pubnub-kafka-sink-connector]
+* xref:connectors/camel-pulsar-kafka-source-connector.adoc[pulsar-kafka-source-connector]
+* xref:connectors/camel-pulsar-kafka-sink-connector.adoc[pulsar-kafka-sink-connector]
+* xref:connectors/camel-quartz-kafka-source-connector.adoc[quartz-kafka-source-connector]
+* xref:connectors/camel-quickfix-kafka-source-connector.adoc[quickfix-kafka-source-connector]
+* xref:connectors/camel-quickfix-kafka-sink-connector.adoc[quickfix-kafka-sink-connector]
+* xref:connectors/camel-rabbitmq-kafka-source-connector.adoc[rabbitmq-kafka-source-connector]
+* xref:connectors/camel-rabbitmq-kafka-sink-connector.adoc[rabbitmq-kafka-sink-connector]
+* xref:connectors/camel-reactive-streams-kafka-source-connector.adoc[reactive-streams-kafka-source-connector]
+* xref:connectors/camel-reactive-streams-kafka-sink-connector.adoc[reactive-streams-kafka-sink-connector]
+* xref:connectors/camel-ref-kafka-source-connector.adoc[ref-kafka-source-connector]
+* xref:connectors/camel-ref-kafka-sink-connector.adoc[ref-kafka-sink-connector]
+* xref:connectors/camel-rest-kafka-source-connector.adoc[rest-kafka-source-connector]
+* xref:connectors/camel-rest-kafka-sink-connector.adoc[rest-kafka-sink-connector]
+* xref:connectors/camel-rest-api-kafka-source-connector.adoc[rest-api-kafka-source-connector]
+* xref:connectors/camel-rest-openapi-kafka-sink-connector.adoc[rest-openapi-kafka-sink-connector]
+* xref:connectors/camel-rest-swagger-kafka-sink-connector.adoc[rest-swagger-kafka-sink-connector]
+* xref:connectors/camel-robotframework-kafka-source-connector.adoc[robotframework-kafka-source-connector]
+* xref:connectors/camel-robotframework-kafka-sink-connector.adoc[robotframework-kafka-sink-connector]
+* xref:connectors/camel-rss-kafka-source-connector.adoc[rss-kafka-source-connector]
+* xref:connectors/camel-saga-kafka-sink-connector.adoc[saga-kafka-sink-connector]
+* xref:connectors/camel-salesforce-kafka-source-connector.adoc[salesforce-kafka-source-connector]
+* xref:connectors/camel-salesforce-kafka-sink-connector.adoc[salesforce-kafka-sink-connector]
+* xref:connectors/camel-sap-netweaver-kafka-sink-connector.adoc[sap-netweaver-kafka-sink-connector]
+* xref:connectors/camel-scheduler-kafka-source-connector.adoc[scheduler-kafka-source-connector]
+* xref:connectors/camel-schematron-kafka-sink-connector.adoc[schematron-kafka-sink-connector]
+* xref:connectors/camel-scp-kafka-sink-connector.adoc[scp-kafka-sink-connector]
+* xref:connectors/camel-seda-kafka-source-connector.adoc[seda-kafka-source-connector]
+* xref:connectors/camel-seda-kafka-sink-connector.adoc[seda-kafka-sink-connector]
+* xref:connectors/camel-service-kafka-source-connector.adoc[service-kafka-source-connector]
+* xref:connectors/camel-servicenow-kafka-sink-connector.adoc[servicenow-kafka-sink-connector]
+* xref:connectors/camel-servlet-kafka-source-connector.adoc[servlet-kafka-source-connector]
+* xref:connectors/camel-sftp-kafka-source-connector.adoc[sftp-kafka-source-connector]
+* xref:connectors/camel-sftp-kafka-sink-connector.adoc[sftp-kafka-sink-connector]
+* xref:connectors/camel-sip-kafka-source-connector.adoc[sip-kafka-source-connector]
+* xref:connectors/camel-sip-kafka-sink-connector.adoc[sip-kafka-sink-connector]
+* xref:connectors/camel-sips-kafka-source-connector.adoc[sips-kafka-source-connector]
+* xref:connectors/camel-sips-kafka-sink-connector.adoc[sips-kafka-sink-connector]
+* xref:connectors/camel-sjms-kafka-source-connector.adoc[sjms-kafka-source-connector]
+* xref:connectors/camel-sjms-kafka-sink-connector.adoc[sjms-kafka-sink-connector]
+* xref:connectors/camel-sjms-batch-kafka-source-connector.adoc[sjms-batch-kafka-source-connector]
+* xref:connectors/camel-sjms2-kafka-source-connector.adoc[sjms2-kafka-source-connector]
+* xref:connectors/camel-sjms2-kafka-sink-connector.adoc[sjms2-kafka-sink-connector]
+* xref:connectors/camel-slack-kafka-source-connector.adoc[slack-kafka-source-connector]
+* xref:connectors/camel-slack-kafka-sink-connector.adoc[slack-kafka-sink-connector]
+* xref:connectors/camel-smpp-kafka-source-connector.adoc[smpp-kafka-source-connector]
+* xref:connectors/camel-smpp-kafka-sink-connector.adoc[smpp-kafka-sink-connector]
+* xref:connectors/camel-smpps-kafka-source-connector.adoc[smpps-kafka-source-connector]
+* xref:connectors/camel-smpps-kafka-sink-connector.adoc[smpps-kafka-sink-connector]
+* xref:connectors/camel-smtps-kafka-source-connector.adoc[smtps-kafka-source-connector]
+* xref:connectors/camel-smtps-kafka-sink-connector.adoc[smtps-kafka-sink-connector]
+* xref:connectors/camel-solr-kafka-sink-connector.adoc[solr-kafka-sink-connector]
+* xref:connectors/camel-solrs-kafka-sink-connector.adoc[solrs-kafka-sink-connector]
+* xref:connectors/camel-spark-kafka-sink-connector.adoc[spark-kafka-sink-connector]
+* xref:connectors/camel-splunk-kafka-source-connector.adoc[splunk-kafka-source-connector]
+* xref:connectors/camel-splunk-kafka-sink-connector.adoc[splunk-kafka-sink-connector]
+* xref:connectors/camel-spring-event-kafka-source-connector.adoc[spring-event-kafka-source-connector]
+* xref:connectors/camel-spring-event-kafka-sink-connector.adoc[spring-event-kafka-sink-connector]
+* xref:connectors/camel-spring-ldap-kafka-sink-connector.adoc[spring-ldap-kafka-sink-connector]
+* xref:connectors/camel-spring-ws-kafka-source-connector.adoc[spring-ws-kafka-source-connector]
+* xref:connectors/camel-spring-ws-kafka-sink-connector.adoc[spring-ws-kafka-sink-connector]
+* xref:connectors/camel-sql-stored-kafka-sink-connector.adoc[sql-stored-kafka-sink-connector]
+* xref:connectors/camel-stax-kafka-sink-connector.adoc[stax-kafka-sink-connector]
+* xref:connectors/camel-stream-kafka-source-connector.adoc[stream-kafka-source-connector]
+* xref:connectors/camel-stream-kafka-sink-connector.adoc[stream-kafka-sink-connector]
+* xref:connectors/camel-stub-kafka-source-connector.adoc[stub-kafka-source-connector]
+* xref:connectors/camel-stub-kafka-sink-connector.adoc[stub-kafka-sink-connector]
+* xref:connectors/camel-telegram-kafka-source-connector.adoc[telegram-kafka-source-connector]
+* xref:connectors/camel-telegram-kafka-sink-connector.adoc[telegram-kafka-sink-connector]
+* xref:connectors/camel-tika-kafka-sink-connector.adoc[tika-kafka-sink-connector]
+* xref:connectors/camel-twilio-kafka-source-connector.adoc[twilio-kafka-source-connector]
+* xref:connectors/camel-twilio-kafka-sink-connector.adoc[twilio-kafka-sink-connector]
+* xref:connectors/camel-twitter-search-kafka-source-connector.adoc[twitter-search-kafka-source-connector]
+* xref:connectors/camel-twitter-search-kafka-sink-connector.adoc[twitter-search-kafka-sink-connector]
+* xref:connectors/camel-undertow-kafka-source-connector.adoc[undertow-kafka-source-connector]
+* xref:connectors/camel-undertow-kafka-sink-connector.adoc[undertow-kafka-sink-connector]
+* xref:connectors/camel-velocity-kafka-sink-connector.adoc[velocity-kafka-sink-connector]
+* xref:connectors/camel-vm-kafka-source-connector.adoc[vm-kafka-source-connector]
+* xref:connectors/camel-vm-kafka-sink-connector.adoc[vm-kafka-sink-connector]
+* xref:connectors/camel-web3j-kafka-source-connector.adoc[web3j-kafka-source-connector]
+* xref:connectors/camel-web3j-kafka-sink-connector.adoc[web3j-kafka-sink-connector]
+* xref:connectors/camel-websocket-kafka-source-connector.adoc[websocket-kafka-source-connector]
+* xref:connectors/camel-websocket-kafka-sink-connector.adoc[websocket-kafka-sink-connector]
+* xref:connectors/camel-weka-kafka-sink-connector.adoc[weka-kafka-sink-connector]
+* xref:connectors/camel-workday-kafka-sink-connector.adoc[workday-kafka-sink-connector]
+* xref:connectors/camel-xj-kafka-sink-connector.adoc[xj-kafka-sink-connector]
+* xref:connectors/camel-xmlsecurity-sign-kafka-sink-connector.adoc[xmlsecurity-sign-kafka-sink-connector]
+* xref:connectors/camel-xmpp-kafka-source-connector.adoc[xmpp-kafka-source-connector]
+* xref:connectors/camel-xmpp-kafka-sink-connector.adoc[xmpp-kafka-sink-connector]
diff --git a/docs/modules/ROOT/pages/connectors/camel-activemq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-activemq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f8a7139
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-activemq-kafka-sink-connector.adoc
@@ -0,0 +1,162 @@
+// kafka-connector options: START
+[[camel-activemq-kafka-connector-sink]]
+= camel-activemq-kafka-connector sink configuration
+
+When using camel-activemq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-activemq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-activemq sink connector supports 136 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryDelay* | Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.formatDateHeadersToIso8601* | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOnTimeoutMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOverride* | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationProperty* | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableTimeToLive* | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message will not expire on the receiver system. See below in section About time to live for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToDestinationSelectorName* | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.brokerURL* | Sets the broker URL to use to connect to ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.configuration* | Configuration of ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.trustAllPackages* | Define if all Java packages are trusted or not (for Java object JMS message types). Notice its not recommended practice to send Java serialized objects over network. Setting this to true can expose security risks, so use this with care. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.usePooledConnection* | Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is true. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useSingleConnection* | Enables or disables whether a Spring SingleConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is false and a pooled connection is used by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.formatDateHeadersTo Iso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyOnTimeoutToMax ConcurrentConsumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToConcurrent Consumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.correlationProperty* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useMessageIDAs CorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.lazyCreateTransaction Manager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-activemq-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-activemq-kafka-source-connector.adoc
new file mode 100644
index 0000000..442bd11
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-activemq-kafka-source-connector.adoc
@@ -0,0 +1,163 @@
+// kafka-connector options: START
+[[camel-activemq-kafka-connector-source]]
+= camel-activemq-kafka-connector source configuration
+
+When using camel-activemq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-activemq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-activemq source connector supports 137 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyTo* | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDeliveryPersistent* | Specifies whether to use persistent delivery by default for replies. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.selector* | Sets the JMS selector to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use. One of: [Simple] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerLoadingOfProperties* | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerPoisonBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToSameDestination Allowed* | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.brokerURL* | Sets the broker URL to use to connect to ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.configuration* | Configuration of ActiveMQ | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.trustAllPackages* | Define if all Java packages are trusted or not (for Java object JMS message types). Notice its not recommended practice to send Java serialized objects over network. Setting this to true can expose security risks, so use this with care. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.usePooledConnection* | Enables or disables whether a PooledConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is true. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useSingleConnection* | Enables or disables whether a Spring SingleConnectionFactory will be used so that when messages are sent to ActiveMQ from outside of a message consuming thread, pooling will be used rather than the default with the Spring JmsTemplate which will create a new connection, session, producer for each message then close them all down again. The default value is false and a pooled connection is used by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.acknowledgementMode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode. For the regular modes, it is preferable to use the acknowledgementModeName instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.acceptMessagesWhile Stopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowReplyManagerQuick Stop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.eagerLoadingOfProperties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerLoadingOfBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.useMessageIDAs CorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.waitForProvision CorrelationToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.lazyCreateTransaction Manager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.activemq.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ahc-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ahc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8054f98
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ahc-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-ahc-kafka-connector-sink]]
+= camel-ahc-kafka-connector sink configuration
+
+When using camel-ahc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ahc-ws-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ahc-ws-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9dd71c3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ahc-ws-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-ws-kafka-connector-sink]]
+= camel-ahc-ws-kafka-connector sink configuration
+
+When using camel-ahc-ws-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-ws sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ahc-ws-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ahc-ws-kafka-source-connector.adoc
new file mode 100644
index 0000000..1d46727
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ahc-ws-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-ws-kafka-connector-source]]
+= camel-ahc-ws-kafka-connector source configuration
+
+When using camel-ahc-ws-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-ws source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendMessageOnError* | Whether to send an message if the web-socket listener received an error. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ahc-wss-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ahc-wss-kafka-sink-connector.adoc
new file mode 100644
index 0000000..af6b03b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ahc-wss-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-wss-kafka-connector-sink]]
+= camel-ahc-wss-kafka-connector sink configuration
+
+When using camel-ahc-wss-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-wss-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-wss sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Define if the Connection Close header has to be added to HTTP Request. This parameter is false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ahc-wss-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ahc-wss-kafka-source-connector.adoc
new file mode 100644
index 0000000..e8e197f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ahc-wss-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-ahc-wss-kafka-connector-source]]
+= camel-ahc-wss-kafka-connector source configuration
+
+When using camel-ahc-wss-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ahc-wss-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ahc-wss source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpUri* | The URI to use such as \http://hostname:port/path | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeEndpoint* | If the option is true, then the Exchange.HTTP_URI header is ignored, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the AhcProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnFailure* | Option to disable throwing the AhcOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or Servlet Camel components). On the producer side the exception will be deserialized and thrown as is, instead of the AhcOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendMessageOnError* | Whether to send an message if the web-socket listener received an error. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigOptions* | To configure the AsyncHttpClientConfig using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfigRealmOptions* | To configure the AsyncHttpClientConfig Realm using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. See Using the JSSE Configuration Utility. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.binding* | To use a custom AhcBinding which allows to control how to bind between AHC and Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.sslContextParameters* | Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. Note that configuring this option will override any SSL/TLS configuration options provided through the clientConfig option at the endpoint or component level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ahc-wss.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-amqp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-amqp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e77c76d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-amqp-kafka-sink-connector.adoc
@@ -0,0 +1,159 @@
+// kafka-connector options: START
+[[camel-amqp-kafka-connector-sink]]
+= camel-amqp-kafka-connector sink configuration
+
+When using camel-amqp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-amqp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-amqp sink connector supports 133 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryDelay* | Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.formatDateHeadersToIso8601* | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOnTimeoutMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOverride* | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationProperty* | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableTimeToLive* | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message will not expire on the receiver system. See below in section About time to live for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToDestinationSelectorName* | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAmqpAnnotations* | Whether to include AMQP annotations when mapping from AMQP to Camel Message. Setting this to true will map AMQP message annotations to message headers. Due to limitations in Apache Qpid JMS API, currently delivery annotations are ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.formatDateHeadersToIso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyOnTimeoutToMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.correlationProperty* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-amqp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-amqp-kafka-source-connector.adoc
new file mode 100644
index 0000000..5953b0a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-amqp-kafka-source-connector.adoc
@@ -0,0 +1,160 @@
+// kafka-connector options: START
+[[camel-amqp-kafka-connector-source]]
+= camel-amqp-kafka-connector source configuration
+
+When using camel-amqp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-amqp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-amqp source connector supports 134 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyTo* | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDeliveryPersistent* | Specifies whether to use persistent delivery by default for replies. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.selector* | Sets the JMS selector to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use. One of: [Simple] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerLoadingOfProperties* | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerPoisonBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToSameDestination Allowed* | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAmqpAnnotations* | Whether to include AMQP annotations when mapping from AMQP to Camel Message. Setting this to true will map AMQP message annotations to message headers. Due to limitations in Apache Qpid JMS API, currently delivery annotations are ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.acknowledgementMode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode. For the regular modes, it is preferable to use the acknowledgementModeName instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.eagerLoadingOfProperties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerLoadingOfBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.amqp.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-apns-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-apns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..17844b3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-apns-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-apns-kafka-connector-sink]]
+= camel-apns-kafka-connector sink configuration
+
+When using camel-apns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-apns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-apns sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tokens* | Configure this property in case you want to statically declare tokens related to devices you want to notify. Tokens are separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.apnsService* | The ApnsService to use. The org.apache.camel.component.apns.factory.ApnsServiceFactory can be used to build a ApnsService | null | ConfigDef.Importance.HIGH
+| *camel.component.apns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-apns-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-apns-kafka-source-connector.adoc
new file mode 100644
index 0000000..abe6d72
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-apns-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-apns-kafka-connector-source]]
+= camel-apns-kafka-connector source configuration
+
+When using camel-apns-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-apns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-apns source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tokens* | Configure this property in case you want to statically declare tokens related to devices you want to notify. Tokens are separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.apnsService* | The ApnsService to use. The org.apache.camel.component.apns.factory.ApnsServiceFactory can be used to build a ApnsService | null | ConfigDef.Importance.HIGH
+| *camel.component.apns.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.apns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-as2-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-as2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c8cc82a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-as2-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-as2-kafka-connector-sink]]
+= camel-as2-kafka-connector sink configuration
+
+When using camel-as2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-as2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-as2 sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [CLIENT] [SERVER] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.as2From* | The value of the AS2From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.as2MessageStructure* | The structure of AS2 Message. One of: PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, signature One of: [PLAIN] [SIGNED] [ENCRYPTED] [SIGNED_ENCRYPTED] [PLAIN_COMPRESSED] [SIGNED_COMPRESSED] [ENCRYPTED_COMPRESSED] [ENCRYPTED_COMPRESSED_SIGNED] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.as2To* | The value of the AS2To header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.as2Version* | The version of the AS2 protocol. One of: [1.0] [1.1] | "1.1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientFqdn* | The Client Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionAlgorithm* | The algorithm used to compress EDI message. One of: [ZLIB] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decryptingPrivateKey* | The key used to encrypt the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dispositionNotificationTo* | The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ediMessageTransferEncoding* | The transfer encoding of EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ediMessageType* | The content type of EDI message. One of application/edifact, application/edi-x12, application/edi-consent | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptingAlgorithm* | The algorithm used to encrypt EDI message. One of: [AES128_CBC] [AES192_CBC] [AES256_CBC] [AES128_CCM] [AES192_CCM] [AES256_CCM] [AES128_GCM] [AES192_GCM] [AES256_GCM] [CAMELLIA128_CBC] [CAMELLIA192_CBC] [CAMELLIA256_CBC] [CAST5_CBC] [DES_CBC] [DES_EDE3_CBC] [GOST28147_GCFB] [IDEA_CBC] [RC2_CBC] [RC4] [SEED_CBC] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptingCertificateChain* | The chain of certificates used to encrypt EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The value of the From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mdnMessageTemplate* | The template used to format MDN message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestUri* | The request URI of EDI message. | "/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.server* | The value included in the Server message header identifying the AS2 Server. | "Camel AS2 Server Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverFqdn* | The Server Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverPortNumber* | The port number of server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signedReceiptMicAlgorithms* | The list of algorithms, in order of preference, requested to generate a message integrity check (MIC) returned in message dispostion notification (MDN) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signingAlgorithm* | The algorithm used to sign EDI message. One of: [SHA3_224WITHRSA] [SHA3_256WITHRSA] [SHA3_384withRSA] [SHA3_512WITHRSA] [MD5WITHRSA] [SHA1WITHRSA] [MD2WITHRSA] [SHA224WITHRSA] [SHA256WITHRSA] [SHA384WITHRSA] [SHA512WITHRSA] [RIPEMD128WITHRSA] [RIPEMD160WITHRSA] [RIPEMD256WITHRSA] [SHA224WITHDSA] [SHA256WITHDSA] [SHA384WITHDSA] [SHA512WITHDSA] [SHA3_224WITHDSA] [SHA3_256WITHDSA] [SHA3_384WITHDSA] [SHA3_512WITHDSA] [SHA1WITHDSA] [SHA3_224WITHECDSA] [SHA3_256WITHECDSA] [SHA3_384WITHECDSA] [SHA3_512WITHECDSA] [SHA1WITHECDSA] [SHA224WITHECDSA] [SHA256WITHECDSA] [SHA384WITHECDSA] [SHA512WITHECDSA] [SHA1WITHPLAIN_ECDSA] [SHA224WITHPLAIN_ECDSA] [SHA256WITHPLAIN_ECDSA] [SHA384WITHPLAIN_ECDSA] [SHA512WITHPLAIN_ECDSA] [RIPEMD160WITHPLAIN_ECDSA] [SHA1WITHRSAANDMGF1] [SHA224WITHRSAANDMGF1] [SHA256WITHRSAANDMGF1] [SHA384WITHRSAANDMGF1] [SHA512WITHRSAANDMGF1] [SHA3_224WITHRSAANDMGF1] [SHA3_256WITHRSAANDMGF1] [SHA3_384WITHRSAANDMGF1] [SHA3_512WITHRSAANDMGF1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signingCertificateChain* | The chain of certificates used to sign EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signingPrivateKey* | The key used to sign the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The value of Subject header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetHostname* | The host name (IP or DNS name) of target host. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetPortNumber* | The port number of target host. -1 indicates the scheme default port. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userAgent* | The value included in the User-Agent message header identifying the AS2 user agent. | "Camel AS2 Client Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-as2-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-as2-kafka-source-connector.adoc
new file mode 100644
index 0000000..5fe7067
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-as2-kafka-source-connector.adoc
@@ -0,0 +1,79 @@
+// kafka-connector options: START
+[[camel-as2-kafka-connector-source]]
+= camel-as2-kafka-connector source configuration
+
+When using camel-as2-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-as2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-as2 source connector supports 53 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [CLIENT] [SERVER] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.as2From* | The value of the AS2From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.as2MessageStructure* | The structure of AS2 Message. One of: PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, signature One of: [PLAIN] [SIGNED] [ENCRYPTED] [SIGNED_ENCRYPTED] [PLAIN_COMPRESSED] [SIGNED_COMPRESSED] [ENCRYPTED_COMPRESSED] [ENCRYPTED_COMPRESSED_SIGNED] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.as2To* | The value of the AS2To header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.as2Version* | The version of the AS2 protocol. One of: [1.0] [1.1] | "1.1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientFqdn* | The Client Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compressionAlgorithm* | The algorithm used to compress EDI message. One of: [ZLIB] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decryptingPrivateKey* | The key used to encrypt the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dispositionNotificationTo* | The value of the Disposition-Notification-To header. Assigning a value to this parameter requests a message disposition notification (MDN) for the AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ediMessageTransferEncoding* | The transfer encoding of EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ediMessageType* | The content type of EDI message. One of application/edifact, application/edi-x12, application/edi-consent | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptingAlgorithm* | The algorithm used to encrypt EDI message. One of: [AES128_CBC] [AES192_CBC] [AES256_CBC] [AES128_CCM] [AES192_CCM] [AES256_CCM] [AES128_GCM] [AES192_GCM] [AES256_GCM] [CAMELLIA128_CBC] [CAMELLIA192_CBC] [CAMELLIA256_CBC] [CAST5_CBC] [DES_CBC] [DES_EDE3_CBC] [GOST28147_GCFB] [IDEA_CBC] [RC2_CBC] [RC4] [SEED_CBC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptingCertificateChain* | The chain of certificates used to encrypt EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.from* | The value of the From header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mdnMessageTemplate* | The template used to format MDN message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestUri* | The request URI of EDI message. | "/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.server* | The value included in the Server message header identifying the AS2 Server. | "Camel AS2 Server Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverFqdn* | The Server Fully Qualified Domain Name (FQDN). Used in message ids sent by endpoint. | "camel.apache.org" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverPortNumber* | The port number of server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signedReceiptMicAlgorithms* | The list of algorithms, in order of preference, requested to generate a message integrity check (MIC) returned in message dispostion notification (MDN) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signingAlgorithm* | The algorithm used to sign EDI message. One of: [SHA3_224WITHRSA] [SHA3_256WITHRSA] [SHA3_384withRSA] [SHA3_512WITHRSA] [MD5WITHRSA] [SHA1WITHRSA] [MD2WITHRSA] [SHA224WITHRSA] [SHA256WITHRSA] [SHA384WITHRSA] [SHA512WITHRSA] [RIPEMD128WITHRSA] [RIPEMD160WITHRSA] [RIPEMD256WITHRSA] [SHA224WITHDSA] [SHA256WITHDSA] [SHA384WITHDSA] [SHA512WITHDSA] [SHA3_224WITHDSA] [SHA3_256WITHDSA] [SHA3_384WITHDSA] [SHA3_512WITHDSA] [SHA1WITHDSA] [SHA3_224WITHECDSA] [SHA3_256WITHECDSA] [SHA3_384WITHECDSA] [SHA3_512WITHECDSA] [SHA1WITHECDSA] [SHA224WITHECDSA] [SHA256WITHECDSA] [SHA384WITHECDSA] [SHA512WITHECDSA] [SHA1WITHPLAIN_ECDSA] [SHA224WITHPLAIN_ECDSA] [SHA256WITHPLAIN_ECDSA] [SHA384WITHPLAIN_ECDSA] [SHA512WITHPLAIN_ECDSA] [RIPEMD160WITHPLAIN_ECDSA] [SHA1WITHRSAANDMGF1] [SHA224WITHRSAANDMGF1] [SHA256WITHRSAANDMGF1] [SHA384WITHRSAANDMGF1] [SHA512WITHRSAANDMGF1] [SHA3_224WITHRSAANDMGF1] [SHA3_256WITHRSAANDMGF1] [SHA3_384WITHRSAANDMGF1] [SHA3_512WITHRSAANDMGF1] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signingCertificateChain* | The chain of certificates used to sign EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.signingPrivateKey* | The key used to sign the EDI message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subject* | The value of Subject header of AS2 message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.targetHostname* | The host name (IP or DNS name) of target host. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.targetPortNumber* | The port number of target host. -1 indicates the scheme default port. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userAgent* | The value included in the User-Agent message header identifying the AS2 user agent. | "Camel AS2 Client Endpoint" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.as2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-asterisk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-asterisk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..11c9c0f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-asterisk-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-asterisk-kafka-connector-sink]]
+= camel-asterisk-kafka-connector sink configuration
+
+When using camel-asterisk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-asterisk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-asterisk sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of component | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.hostname* | The hostname of the asterisk server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.password* | Login password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | Login username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | What action to perform such as getting queue status, sip peers or extension state. One of: [QUEUE_STATUS] [SIP_PEERS] [EXTENSION_STATE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-asterisk-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-asterisk-kafka-source-connector.adoc
new file mode 100644
index 0000000..35b3a3e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-asterisk-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-asterisk-kafka-connector-source]]
+= camel-asterisk-kafka-connector source configuration
+
+When using camel-asterisk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-asterisk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-asterisk source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of component | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.hostname* | The hostname of the asterisk server | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.password* | Login password | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.username* | Login username | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.asterisk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atmos-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atmos-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b3011a4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atmos-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-atmos-kafka-connector-sink]]
+= camel-atmos-kafka-connector sink configuration
+
+When using camel-atmos-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmos-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmos sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Atmos name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.operation* | Operation to perform One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.localPath* | Local path to put files | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.newRemotePath* | New path on Atmos when moving files | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | Search query on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remotePath* | Where to put files on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uri* | Atomos server uri | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fullTokenId* | Atmos client fullTokenId | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslValidation* | Atmos SSL validation | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.uri* | The URI of the server for the Atmos client to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.fullTokenId* | The token id to pass to the Atmos client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.sslValidation* | Whether the Atmos client should perform SSL validation | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atmos-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atmos-kafka-source-connector.adoc
new file mode 100644
index 0000000..d328bfd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atmos-kafka-source-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-atmos-kafka-connector-source]]
+= camel-atmos-kafka-connector source configuration
+
+When using camel-atmos-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmos-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmos source connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Atmos name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.operation* | Operation to perform One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.localPath* | Local path to put files | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.newRemotePath* | New path on Atmos when moving files | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | Search query on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remotePath* | Where to put files on Atmos | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uri* | Atomos server uri | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fullTokenId* | Atmos client fullTokenId | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslValidation* | Atmos SSL validation | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.uri* | The URI of the server for the Atmos client to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.fullTokenId* | The token id to pass to the Atmos client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.secretKey* | The secret key to pass to the Atmos client (should be base64 encoded) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmos.sslValidation* | Whether the Atmos client should perform SSL validation | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atmosphere-websocket-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atmosphere-websocket-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ac1c63f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atmosphere-websocket-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-atmosphere-websocket-kafka-connector-sink]]
+= camel-atmosphere-websocket-kafka-connector sink configuration
+
+When using camel-atmosphere-websocket-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmosphere-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmosphere-websocket sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.servicePath* | Name of websocket endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | Whether to send to all (broadcast) or send to a single receiver. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyHeaders* | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMethod* | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. One of: [GET] [POST] [PUT] [DELETE] [HEAD] [OPTIONS] [TRACE] [PATCH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreResponseBody* | If this option is true, The http producer won't read response body and cache the input stream | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthScheme* | Proxy authentication scheme to use One of: [http] [https] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | Proxy hostname to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Proxy port to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authHost* | Authentication host to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.allowJava SerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.http Configuration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.headerFilter Strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atmosphere-websocket-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atmosphere-websocket-kafka-source-connector.adoc
new file mode 100644
index 0000000..8b6360e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atmosphere-websocket-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-atmosphere-websocket-kafka-connector-source]]
+= camel-atmosphere-websocket-kafka-connector source configuration
+
+When using camel-atmosphere-websocket-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atmosphere-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atmosphere-websocket source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.servicePath* | Name of websocket endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendToAll* | Whether to send to all (broadcast) or send to a single receiver. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useStreaming* | To enable streaming to send data as multiple text fragments. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.async* | Configure the consumer to work in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.responseBufferSize* | To use a custom buffer size on the javax.servlet.ServletResponse. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servletName* | Name of the servlet to use | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentMultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckContentAvailable* | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileNameExtWhitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.servletName* | Default name of servlet to use. The default name is CamelServlet. | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.attachment MultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.fileNameExt Whitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.httpRegistry* | To use a custom org.apache.camel.component.servlet.HttpRegistry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.allowJava SerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.http Configuration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atmosphere-websocket.headerFilter Strategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atom-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atom-kafka-source-connector.adoc
new file mode 100644
index 0000000..1594e7b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atom-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-atom-kafka-connector-source]]
+= camel-atom-kafka-connector source configuration
+
+When using camel-atom-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atom-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atom source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.feedUri* | The URI to the feed to poll. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.feedHeader* | Sets whether to add the feed object as a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Sets whether to use filtering or not of the entries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lastUpdate* | Sets the timestamp to be used for filtering entries from the atom feeds. This options is only in conjunction with the splitEntries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortEntries* | Sets whether to sort entries by published date. Only works when splitEntries = true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitEntries* | Sets whether or not entries should be sent individually or whether the entire feed should be sent as a single message | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throttleEntries* | Sets whether all entries identified in a single feed poll should be delivered immediately. If true, only one entry is processed per consumer.delay. Only applicable when splitEntries = true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Sets the username to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.atom.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atom.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-map-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-map-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86dff9c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-map-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-atomix-map-kafka-connector-sink]]
+= camel-atomix-map-kafka-connector sink configuration
+
+When using camel-atomix-map-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-map sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [PUT] [PUT_IF_ABSENT] [GET] [CLEAR] [SIZE] [CONTAINS_KEY] [CONTAINS_VALUE] [IS_EMPTY] [ENTRY_SET] [REMOVE] [REPLACE] [VALUES] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The key to use if none is set in the header or to listen for events for a specific key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-map-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-map-kafka-source-connector.adoc
new file mode 100644
index 0000000..71149ae
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-map-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-atomix-map-kafka-connector-source]]
+= camel-atomix-map-kafka-connector source configuration
+
+When using camel-atomix-map-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-map source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [PUT] [PUT_IF_ABSENT] [GET] [CLEAR] [SIZE] [CONTAINS_KEY] [CONTAINS_VALUE] [IS_EMPTY] [ENTRY_SET] [REMOVE] [REPLACE] [VALUES] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.key* | The key to use if none is set in the header or to listen for events for a specific key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-messaging-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-messaging-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0634ed8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-messaging-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-atomix-messaging-kafka-connector-sink]]
+= camel-atomix-messaging-kafka-connector sink configuration
+
+When using camel-atomix-messaging-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-messaging sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.broadcastType* | The broadcast type. One of: [ALL] [RANDOM] | "ALL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelName* | The messaging channel name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [DIRECT] [BROADCAST] | "DIRECT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.memberName* | The Atomix Group member name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-messaging-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-messaging-kafka-source-connector.adoc
new file mode 100644
index 0000000..a0c7476
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-messaging-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-atomix-messaging-kafka-connector-source]]
+= camel-atomix-messaging-kafka-connector source configuration
+
+When using camel-atomix-messaging-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-messaging source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.broadcastType* | The broadcast type. One of: [ALL] [RANDOM] | "ALL" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelName* | The messaging channel name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [DIRECT] [BROADCAST] | "DIRECT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.memberName* | The Atomix Group member name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-multimap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-multimap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..37aa1d4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-multimap-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-atomix-multimap-kafka-connector-sink]]
+= camel-atomix-multimap-kafka-connector sink configuration
+
+When using camel-atomix-multimap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-multimap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-multimap sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [PUT] [GET] [CLEAR] [SIZE] [CONTAINS_KEY] [IS_EMPTY] [REMOVE] [REMOVE_VALUE] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The key to use if none is set in the header or to listen for events for a specific key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-multimap.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-queue-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7b13ed9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-queue-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-atomix-queue-kafka-connector-sink]]
+= camel-atomix-queue-kafka-connector sink configuration
+
+When using camel-atomix-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-queue sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [ADD] [OFFER] [PEEK] [POLL] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-queue-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-queue-kafka-source-connector.adoc
new file mode 100644
index 0000000..2ae7cb3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-queue-kafka-source-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-atomix-queue-kafka-connector-source]]
+= camel-atomix-queue-kafka-connector source configuration
+
+When using camel-atomix-queue-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-queue source connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [ADD] [OFFER] [PEEK] [POLL] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-set-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-set-kafka-sink-connector.adoc
new file mode 100644
index 0000000..588d32c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-set-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-atomix-set-kafka-connector-sink]]
+= camel-atomix-set-kafka-connector sink configuration
+
+When using camel-atomix-set-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-set sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [ADD] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-set-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-set-kafka-source-connector.adoc
new file mode 100644
index 0000000..b816d6e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-set-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-atomix-set-kafka-connector-source]]
+= camel-atomix-set-kafka-connector source configuration
+
+When using camel-atomix-set-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-set source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [ADD] [CLEAR] [CONTAINS] [IS_EMPTY] [REMOVE] [SIZE] | "ADD" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-value-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-value-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a7f072c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-value-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-atomix-value-kafka-connector-sink]]
+= camel-atomix-value-kafka-connector sink configuration
+
+When using camel-atomix-value-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-value-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-value sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAction* | The default action. One of: [SET] [GET] [GET_AND_SET] [COMPARE_AND_SET] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-atomix-value-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-atomix-value-kafka-source-connector.adoc
new file mode 100644
index 0000000..9fe9baf
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-atomix-value-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-atomix-value-kafka-connector-source]]
+= camel-atomix-value-kafka-connector source configuration
+
+When using camel-atomix-value-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-atomix-value-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-atomix-value source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceName* | The distributed resource name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.atomix* | The Atomix instance to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | The Atomix configuration uri. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAction* | The default action. One of: [SET] [GET] [GET_AND_SET] [COMPARE_AND_SET] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodes* | The address of the nodes composing the cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | The header that wil carry the result. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transportClassName* | The class name (fqn) of the Atomix transport | "io.atomix.catalyst.transport.netty.NettyTransport" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ttl* | The resource ttl. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceConfig* | The cluster wide default resource configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultResourceOptions* | The local default resource options. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ephemeral* | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readConsistency* | The read consistency level. One of: [ATOMIC] [ATOMIC_LEASE] [SEQUENTIAL] [LOCAL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceConfigs* | Cluster wide resources configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceOptions* | Local resources configurations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.atomix* | The shared AtomixClient instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configuration* | The shared component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.configurationUri* | The path to the AtomixClient configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.nodes* | The nodes the AtomixClient should connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.atomix-value.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-avro-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-avro-kafka-sink-connector.adoc
new file mode 100644
index 0000000..df4c2cd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-avro-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-avro-kafka-connector-sink]]
+= camel-avro-kafka-connector sink configuration
+
+When using camel-avro-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-avro-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-avro sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.transport* | Transport to use, can be either http or netty One of: [http] [netty] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | Hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.messageName* | The name of the message to send. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | Avro protocol to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolClassName* | Avro protocol to use defined by the FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolLocation* | Avro protocol location | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reflectionProtocol* | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.singleParameter* | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriAuthority* | Authority to use (username and password) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.configuration* | To use a shared AvroConfiguration to configure options once | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-avro-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-avro-kafka-source-connector.adoc
new file mode 100644
index 0000000..034ea27
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-avro-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-avro-kafka-connector-source]]
+= camel-avro-kafka-connector source configuration
+
+When using camel-avro-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-avro-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-avro source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.transport* | Transport to use, can be either http or netty One of: [http] [netty] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | Hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.messageName* | The name of the message to send. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | Avro protocol to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolClassName* | Avro protocol to use defined by the FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolLocation* | Avro protocol location | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reflectionProtocol* | If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.singleParameter* | If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uriAuthority* | Authority to use (username and password) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.avro.configuration* | To use a shared AvroConfiguration to configure options once | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-cw-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-cw-kafka-sink-connector.adoc
new file mode 100644
index 0000000..73c8dda
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-cw-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws-cw-kafka-connector-sink]]
+= camel-aws-cw-kafka-connector sink configuration
+
+When using camel-aws-cw-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-cw-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-cw sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.namespace* | The metric namespace | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonCwClient* | To use the AmazonCloudWatch as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the CW client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which CW client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timestamp* | The metric timestamp | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.unit* | The metric unit | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | The metric value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.region* | The region in which CW client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-cw.configuration* | The AWS CW default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-ddb-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-ddb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..dc02caa
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-ddb-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-aws-ddb-kafka-connector-sink]]
+= camel-aws-ddb-kafka-connector sink configuration
+
+When using camel-aws-ddb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ddb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ddb sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.tableName* | The name of the table currently worked with. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonDDBClient* | To use the AmazonDynamoDB as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistentRead* | Determines whether or not strong consistency should be enforced when data is read. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeName* | Attribute name when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeType* | Attribute type when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | What operation to perform One of: [BatchGetItems] [DeleteItem] [DeleteTable] [DescribeTable] [GetItem] [PutItem] [Query] [Scan] [UpdateItem] [UpdateTable] | "PutItem" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the DDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the DDB client. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDB client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readCapacity* | The provisioned throughput to reserve for reading resources from your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeCapacity* | The provisioned throughput to reserved for writing resources to your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddb.configuration* | The AWS DDB default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-ddbstream-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-ddbstream-kafka-source-connector.adoc
new file mode 100644
index 0000000..b20a05a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-ddbstream-kafka-source-connector.adoc
@@ -0,0 +1,64 @@
+// kafka-connector options: START
+[[camel-aws-ddbstream-kafka-connector-source]]
+= camel-aws-ddbstream-kafka-connector source configuration
+
+When using camel-aws-ddbstream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ddbstream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ddbstream source connector supports 38 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.tableName* | Name of the dynamodb table | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonDynamoDbStreamsClient* | Amazon DynamoDB client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.iteratorType* | Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if {AT,AFTER}_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. One of: [TRIM_HORIZON] [LATEST] [AT_SEQUENCE_NUMBER] [AFTER_SEQUENCE_NUMBER] | "LATEST" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResultsPerRequest* | Maximum number of records that will be fetched in each poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDBStreams client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which DDBStreams client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sequenceNumberProvider* | Provider for the sequence number when using one of the two ShardIteratorType.{AT,AFTER}_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ddbstream.configuration* | The AWS DDB stream default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-ec2-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-ec2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7c5f79f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-ec2-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-ec2-kafka-connector-sink]]
+= camel-aws-ec2-kafka-connector sink configuration
+
+When using camel-aws-ec2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ec2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ec2 sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonEc2Client* | To use a existing configured AmazonEC2Client as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags One of: [createAndRunInstances] [startInstances] [stopInstances] [terminateInstances] [describeInstances] [describeInstancesStatus] [rebootInstances] [monitorInstances] [unmonitorInstances] [createTags] [deleteTags] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EC2 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EC2 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.region* | The region in which EC2 client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ec2.configuration* | The AWS EC2 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-ecs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-ecs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4d7e187
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-ecs-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-ecs-kafka-connector-sink]]
+= camel-aws-ecs-kafka-connector sink configuration
+
+When using camel-aws-ecs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ecs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ecs sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ecsClient* | To use a existing configured AWS ECS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the ECS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.region* | The region in which ECS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ecs.configuration* | The AWS ECS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-eks-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-eks-kafka-sink-connector.adoc
new file mode 100644
index 0000000..da42597
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-eks-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-eks-kafka-connector-sink]]
+= camel-aws-eks-kafka-connector sink configuration
+
+When using camel-aws-eks-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-eks-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-eks sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eksClient* | To use a existing configured AWS EKS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EKS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.region* | The region in which EKS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-eks.configuration* | The AWS EKS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-iam-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-iam-kafka-sink-connector.adoc
new file mode 100644
index 0000000..94b1a83
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-iam-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-iam-kafka-connector-sink]]
+= camel-aws-iam-kafka-connector sink configuration
+
+When using camel-aws-iam-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-iam-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-iam sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.iamClient* | To use a existing configured AWS IAM as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listAccessKeys] [createUser] [deleteUser] [getUser] [listUsers] [createAccessKey] [deleteAccessKey] [updateAccessKey] [createGroup] [deleteGroup] [listGroups] [addUserToGroup] [removeUserFromGroup] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the IAM client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which IAM client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.region* | The region in which IAM client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-iam.configuration* | The AWS IAM default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-firehose-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-firehose-kafka-sink-connector.adoc
new file mode 100644
index 0000000..60d9ffb
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-firehose-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-aws-kinesis-firehose-kafka-connector-sink]]
+= camel-aws-kinesis-firehose-kafka-connector sink configuration
+
+When using camel-aws-kinesis-firehose-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kinesis-firehose-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kinesis-firehose sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.streamName* | Name of the stream | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonKinesisFirehoseClient* | Amazon Kinesis Firehose client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Kinesis Firehose client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Kinesis Firehose client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Kinesis Firehose client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Kinesis client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1)You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis-firehose.configuration* | The AWS Kinesis Firehose default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a0d0832
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-aws-kinesis-kafka-connector-sink]]
+= camel-aws-kinesis-kafka-connector sink configuration
+
+When using camel-aws-kinesis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kinesis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kinesis sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.streamName* | Name of the stream | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonKinesisClient* | Amazon Kinesis client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Kinesis client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Kinesis client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1)You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-kafka-source-connector.adoc
new file mode 100644
index 0000000..e5778c8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-kinesis-kafka-source-connector.adoc
@@ -0,0 +1,66 @@
+// kafka-connector options: START
+[[camel-aws-kinesis-kafka-connector-source]]
+= camel-aws-kinesis-kafka-connector source configuration
+
+When using camel-aws-kinesis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kinesis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kinesis source connector supports 40 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.streamName* | Name of the stream | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonKinesisClient* | Amazon Kinesis client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the Kinesis client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Kinesis client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which Kinesis client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1)You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.iteratorType* | Defines where in the Kinesis stream to start getting records One of: [AT_SEQUENCE_NUMBER] [AFTER_SEQUENCE_NUMBER] [TRIM_HORIZON] [LATEST] [AT_TIMESTAMP] | "TRIM_HORIZON" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResultsPerRequest* | Maximum number of records that will be fetched in each poll | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sequenceNumber* | The sequence number to start polling from. Required if iteratorType is set to AFTER_SEQUENCE_NUMBER or AT_SEQUENCE_NUMBER | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shardClosed* | Define what will be the behavior in case of shard closed. Possible value are ignore, silent and fail. In case of ignore a message will be logged and the consumer will restart from the beginning,in case of silent there will be no logging and the consumer will start from the beginning,in case of fail a ReachedClosedStateException will be raised One of: [ignore] [fail] [silent] | "ignore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shardId* | Defines which shardId in the Kinesis stream to get records from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kinesis.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-kms-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-kms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c8ac375
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-kms-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-kms-kafka-connector-sink]]
+= camel-aws-kms-kafka-connector sink configuration
+
+When using camel-aws-kms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-kms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-kms sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsClient* | To use a existing configured AWS KMS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listKeys] [createKey] [disableKey] [scheduleKeyDeletion] [describeKey] [enableKey] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the KMS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which KMS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.region* | The region in which KMS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-kms.configuration* | The AWS KMS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-lambda-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-lambda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bc21d2e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-lambda-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-lambda-kafka-connector-sink]]
+= camel-aws-lambda-kafka-connector sink configuration
+
+When using camel-aws-lambda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-lambda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-lambda sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.function* | Name of the Lambda function. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be listFunctions, getFunction, createFunction, deleteFunction or invokeFunction One of: [listFunctions] [getFunction] [createAlias] [deleteAlias] [getAlias] [listAliases] [createFunction] [deleteFunction] [invokeFunction] [updateFunction] [createEventSourceMapping] [deleteEventSourceMapping] [listEventSourceMapping] [listTags] [tagResource] [untagResource] [publishVersion] [listVersions] | "invokeFunction" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | Amazon AWS Region. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.awsLambdaClient* | To use a existing configured AwsLambdaClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Lambda client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Lambda client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Lambda client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-lambda.configuration* | The AWS Lambda default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-mq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-mq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1d62017
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-mq-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-mq-kafka-connector-sink]]
+= camel-aws-mq-kafka-connector sink configuration
+
+When using camel-aws-mq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-mq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-mq sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonMqClient* | To use a existing configured AmazonMQClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be listBrokers,createBroker,deleteBroker One of: [listBrokers] [createBroker] [deleteBroker] [rebootBroker] [updateBroker] [describeBroker] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MQ client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MQ client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.region* | The region in which MQ client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-mq.configuration* | The AWS MQ default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-msk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-msk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..018ad00
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-msk-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws-msk-kafka-connector-sink]]
+= camel-aws-msk-kafka-connector sink configuration
+
+When using camel-aws-msk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-msk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-msk sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mskClient* | To use a existing configured AWS MSK as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [createCluster] [deleteCluster] [describeCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MSK client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MSK client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.region* | The region in which MSK client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-msk.configuration* | The AWS MSK default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-s3-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-s3-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b5bff82
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-s3-kafka-sink-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-aws-s3-kafka-connector-sink]]
+= camel-aws-s3-kafka-connector sink configuration
+
+When using camel-aws-s3-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-s3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-s3 sink connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.bucketNameOrArn* | Bucket name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonS3Client* | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateBucket* | Setting the autocreation of the bucket | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pathStyleAccess* | Whether or not the S3 client should use path style access | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Specify a proxy port to be used inside the client definition. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the S3 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useIAMCredentials* | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptionMaterials* | The encryption materials to use in case of Symmetric/Asymmetric client usage | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useEncryption* | Define if encryption must be used or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteAfterWrite* | Delete file object after the S3 file has been uploaded | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyName* | Setting the key name for an element in the bucket through endpoint parameter | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiPartUpload* | If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do in case the user don't want to do only an upload One of: [copyObject] [deleteBucket] [listBuckets] [downloadLink] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.partSize* | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverSideEncryption* | Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.storageClass* | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.awsKMSKeyId* | Define the id of KMS key to use in case KMS is enabled | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useAwsKMS* | Define if KMS must be used or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accelerateModeEnabled* | Define if Accelerate Mode enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunkedEncodingDisabled* | Define if disabled Chunked Encoding is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dualstackEnabled* | Define if Dualstack enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceGlobalBucketAccessEnabled* | Define if Force Global Bucket Access enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.payloadSigningEnabled* | Define if Payload Signing enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.region* | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-s3-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-s3-kafka-source-connector.adoc
new file mode 100644
index 0000000..54f7f22
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-s3-kafka-source-connector.adoc
@@ -0,0 +1,104 @@
+// kafka-connector options: START
+[[camel-aws-s3-kafka-connector-source]]
+= camel-aws-s3-kafka-connector source configuration
+
+When using camel-aws-s3-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-s3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-s3 source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.bucketNameOrArn* | Bucket name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonS3Client* | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateBucket* | Setting the autocreation of the bucket | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pathStyleAccess* | Whether or not the S3 client should use path style access | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.policy* | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | Specify a proxy port to be used inside the client definition. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the S3 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIAMCredentials* | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptionMaterials* | The encryption materials to use in case of Symmetric/Asymmetric client usage | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useEncryption* | Define if encryption must be used or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteAfterRead* | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, or only the S3Constants#KEY header. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delimiter* | The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | To get the object from the bucket with the given file name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeBody* | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConnections* | Set the maxConnections parameter in the S3 client configuration | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefix* | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autocloseBody* | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accelerateModeEnabled* | Define if Accelerate Mode enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunkedEncodingDisabled* | Define if disabled Chunked Encoding is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dualstackEnabled* | Define if Dualstack enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forceGlobalBucketAccess Enabled* | Define if Force Global Bucket Access enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.payloadSigningEnabled* | Define if Payload Signing enabled is true or false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.region* | The region where the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-s3.configuration* | The AWS S3 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
+
+== Examples
+
+Here is an example of configuration of the source connector
+
+[source,bash]
+--------------------------------------------------------------------------------
+name=CamelAWSS3SourceConnector
+connector.class=org.apache.camel.kafkaconnector.awss3.CamelAwss3SourceConnector
+key.converter=org.apache.kafka.connect.storage.StringConverter
+value.converter=org.apache.camel.kafkaconnector.awss3.converters.S3ObjectConverter
+
+camel.source.maxPollDuration=10000
+
+camel.source.kafka.topic=mytopic
+
+camel.source.url=aws-s3://camel-kafka-connector?autocloseBody=false
+
+camel.component.aws-s3.access-key=xxxx
+camel.component.aws-s3.secret-key=yyyy
+camel.component.aws-s3.region=EU_WEST_1
+--------------------------------------------------------------------------------
+
+In this example we are polling the bucket camel-kafka-connector as source.
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-sdb-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-sdb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1992b65
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-sdb-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-aws-sdb-kafka-connector-sink]]
+= camel-aws-sdb-kafka-connector sink configuration
+
+When using camel-aws-sdb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sdb sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.domainName* | The name of the domain currently worked with. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSDBClient* | To use the AmazonSimpleDB as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistentRead* | Determines whether or not strong consistency should be enforced when data is read. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxNumberOfDomains* | The maximum number of domain names you want returned. The range is 1 to 100. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to perform One of: [BatchDeleteAttributes] [BatchPutAttributes] [DeleteAttributes] [DeleteDomain] [DomainMetadata] [GetAttributes] [ListDomains] [PutAttributes] [Select] | "PutAttributes" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SDB client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SDB client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sdb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-ses-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-ses-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fce1dbd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-ses-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws-ses-kafka-connector-sink]]
+= camel-aws-ses-kafka-connector sink configuration
+
+When using camel-aws-ses-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-ses-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-ses sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.from* | The sender's email address. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSESClient* | To use the AmazonSimpleEmailService as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SES client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SES client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToAddresses* | List of reply-to email address(es) for the message, override it using 'CamelAwsSesReplyToAddresses' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.returnPath* | The email address to which bounce notifications are to be forwarded, override it using 'CamelAwsSesReturnPath' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSesSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | List of destination email address. Can be overriden with 'CamelAwsSesTo' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.region* | The region in which SES client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-ses.configuration* | The AWS SES default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-sns-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-sns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..157bcf2
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-sns-kafka-sink-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-aws-sns-kafka-connector-sink]]
+= camel-aws-sns-kafka-connector sink configuration
+
+When using camel-aws-sns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sns sink connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topicNameOrArn* | Topic name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSNSClient* | To use the AmazonSNS as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSQSClient* | An SQS Client to use as bridge between SNS and SQS | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateTopic* | Setting the autocreation of the topic | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageStructure* | The message structure to use such as json | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SNS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | The queueUrl to subscribe to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SNS client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the topic | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSnsSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subscribeSNStoSQS* | Define if the subscription between SNS Topic and SQS must be done or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.region* | The region in which SNS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sns.configuration* | The AWS SNS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-sqs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-sqs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d98aaf0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-sqs-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-aws-sqs-kafka-connector-sink]]
+= camel-aws-sqs-kafka-connector sink configuration
+
+When using camel-aws-sqs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sqs sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delaySeconds* | Delay sending messages for a number of seconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageDeduplicationIdStrategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: useExchangeId, useContentBasedDeduplication. For the useContentBasedDeduplication option, no messageDeduplicationId will be set on the message. One of: [useExchangeId] [useContentBasedDeduplication] | "useExchangeId" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageGroupIdStrategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: useConstant, useExchangeId, usePropertyValue. For the usePropertyValue option, the value of property CamelAwsMessageGroupId will be used. One of: [useConstant] [useExchangeId] [usePropertyValue] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do in case the user don't want to send only a message One of: [sendBatchMessage] [deleteMessage] [listQueues] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveMessageWaitTimeSeconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-sqs-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-sqs-kafka-source-connector.adoc
new file mode 100644
index 0000000..2336214
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-sqs-kafka-source-connector.adoc
@@ -0,0 +1,86 @@
+// kafka-connector options: START
+[[camel-aws-sqs-kafka-connector-source]]
+= camel-aws-sqs-kafka-connector source configuration
+
+When using camel-aws-sqs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-sqs source connector supports 60 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attributeNames* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultVisibilityTimeout* | The default visibility timeout (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteAfterRead* | Delete message from SQS after it has been read | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteIfFiltered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendMessageVisibility* | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsDataKeyReusePeriodSeconds* | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageAttributeNames* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the queue | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.visibilityTimeout* | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitTimeSeconds* | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveMessageWaitTime Seconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-swf-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-swf-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e74eb50
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-swf-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-aws-swf-kafka-connector-sink]]
+= camel-aws-swf-kafka-connector sink configuration
+
+When using camel-aws-swf-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-swf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-swf sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | Activity or workflow One of: [activity] [workflow] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSWClient* | To use the given AmazonSimpleWorkflowClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataConverter* | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainName* | The workflow domain to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventName* | The workflow or activity event name to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | Amazon AWS Region. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.version* | The workflow or activity event version to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfigurationParameters* | To configure the ClientConfiguration using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.startWorkflowOptionsParameters* | To configure the StartWorkflowOptions using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sWClientParameters* | To configure the AmazonSimpleWorkflowClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.activitySchedulingOptions* | Activity scheduling options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.childPolicy* | The policy to use on child workflows when terminating a workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.executionStartToCloseTimeout* | Set the execution start to close timeout. | "3600" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Workflow operation One of: [SIGNAL] [CANCEL] [TERMINATE] [GET_STATE] [START] [DESCRIBE] [GET_HISTORY] | "START" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signalName* | The name of the signal to send to the workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stateResultType* | The type of the result when a workflow state is queried. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.taskStartToCloseTimeout* | Set the task start to close timeout. | "600" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.terminationDetails* | Details for terminating a workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.terminationReason* | The reason for terminating a workflow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.region* | Amazon AWS Region. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.configuration* | The AWS SWF default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-swf-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-swf-kafka-source-connector.adoc
new file mode 100644
index 0000000..865d284
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-swf-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-aws-swf-kafka-connector-source]]
+= camel-aws-swf-kafka-connector source configuration
+
+When using camel-aws-swf-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-swf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-swf source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Activity or workflow One of: [activity] [workflow] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonSWClient* | To use the given AmazonSimpleWorkflowClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataConverter* | An instance of com.amazonaws.services.simpleworkflow.flow.DataConverter to use for serializing/deserializing the data. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainName* | The workflow domain to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventName* | The workflow or activity event name to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | Amazon AWS Region. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.version* | The workflow or activity event version to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfiguration Parameters* | To configure the ClientConfiguration using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startWorkflowOptions Parameters* | To configure the StartWorkflowOptions using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sWClientParameters* | To configure the AmazonSimpleWorkflowClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityList* | The list name to consume activities from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityThreadPoolSize* | Maximum number of threads in work pool for activity. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityTypeExecutionOptions* | Activity execution options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activityTypeRegistration Options* | Activity registration options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workflowList* | The list name to consume workflows from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workflowTypeRegistration Options* | Workflow registration options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.accessKey* | Amazon AWS Access Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.region* | Amazon AWS Region. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.secretKey* | Amazon AWS Secret Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-swf.configuration* | The AWS SWF default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws-translate-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws-translate-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2a340bc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws-translate-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws-translate-kafka-connector-sink]]
+= camel-aws-translate-kafka-connector sink configuration
+
+When using camel-aws-translate-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws-translate-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws-translate sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autodetectSourceLanguage* | Being able to autodetect the source language | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [translateText] | "translateText" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Translate client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Translate client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceLanguage* | Source language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetLanguage* | Target language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.translateClient* | To use a existing configured AWS Translate as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.region* | The region in which Translate client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws-translate.configuration* | The AWS Translate default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-cw-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-cw-kafka-sink-connector.adoc
new file mode 100644
index 0000000..13ab93e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-cw-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws2-cw-kafka-connector-sink]]
+= camel-aws2-cw-kafka-connector sink configuration
+
+When using camel-aws2-cw-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-cw-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-cw sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.namespace* | The metric namespace | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonCwClient* | To use the AmazonCloudWatch as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the CW client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the CW client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timestamp* | The metric timestamp | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.unit* | The metric unit | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | The metric value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.region* | The region in which CW client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-cw.configuration* | The AWS CW default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-ddb-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-ddb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6290567
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-ddb-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-aws2-ddb-kafka-connector-sink]]
+= camel-aws2-ddb-kafka-connector sink configuration
+
+When using camel-aws2-ddb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ddb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ddb sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.tableName* | The name of the table currently worked with. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonDDBClient* | To use the AmazonDynamoDB as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistentRead* | Determines whether or not strong consistency should be enforced when data is read. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeName* | Attribute name when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAttributeType* | Attribute type when creating table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | What operation to perform One of: [BatchGetItems] [DeleteItem] [DeleteTable] [DescribeTable] [GetItem] [PutItem] [Query] [Scan] [UpdateItem] [UpdateTable] | "PutItem" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the DDB client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The region in which DynamoDB client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDB client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readCapacity* | The provisioned throughput to reserve for reading resources from your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeCapacity* | The provisioned throughput to reserved for writing resources to your table | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.region* | The region in which DDB client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddb.configuration* | The AWS DDB default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-ddbstream-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-ddbstream-kafka-source-connector.adoc
new file mode 100644
index 0000000..a66f2a5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-ddbstream-kafka-source-connector.adoc
@@ -0,0 +1,64 @@
+// kafka-connector options: START
+[[camel-aws2-ddbstream-kafka-connector-source]]
+= camel-aws2-ddbstream-kafka-connector source configuration
+
+When using camel-aws2-ddbstream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ddbstream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ddbstream source connector supports 38 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.tableName* | Name of the dynamodb table | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonDynamoDbStreamsClient* | Amazon DynamoDB client to use for all requests for this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.iteratorType* | Defines where in the DynaboDB stream to start getting records. Note that using TRIM_HORIZON can cause a significant delay before the stream has caught up to real-time. if {AT,AFTER}_SEQUENCE_NUMBER are used, then a sequenceNumberProvider MUST be supplied. One of: [TRIM_HORIZON] [LATEST] [AT_SEQUENCE_NUMBER] [AFTER_SEQUENCE_NUMBER] [null] | "LATEST" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResultsPerRequest* | Maximum number of records that will be fetched in each poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the DDBStreams client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the DDBStreams client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which DDBStreams client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sequenceNumberProvider* | Provider for the sequence number when using one of the two ShardIteratorType.{AT,AFTER}_SEQUENCE_NUMBER iterator types. Can be a registry reference or a literal sequence number. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.region* | Amazon AWS Region | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ddbstream.configuration* | The AWS DDB stream default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-ec2-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-ec2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9091c61
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-ec2-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-ec2-kafka-connector-sink]]
+= camel-aws2-ec2-kafka-connector sink configuration
+
+When using camel-aws2-ec2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ec2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ec2 sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonEc2Client* | To use a existing configured AmazonEC2Client as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags One of: [createAndRunInstances] [startInstances] [stopInstances] [terminateInstances] [describeInstances] [describeInstancesStatus] [rebootInstances] [monitorInstances] [unmonitorInstances] [createTags] [deleteTags] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EC2 client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EC2 client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EC2 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.region* | The region in which EC2 client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ec2.configuration* | The AWS EC2 default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-ecs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-ecs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0c1210a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-ecs-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-ecs-kafka-connector-sink]]
+= camel-aws2-ecs-kafka-connector sink configuration
+
+When using camel-aws2-ecs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ecs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ecs sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ecsClient* | To use a existing configured AWS ECS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the ECS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the ECS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.region* | The region in which ECS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ecs.configuration* | The AWS ECS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-eks-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-eks-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6d1c411
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-eks-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-eks-kafka-connector-sink]]
+= camel-aws2-eks-kafka-connector sink configuration
+
+When using camel-aws2-eks-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-eks-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-eks sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eksClient* | To use a existing configured AWS EKS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [describeCluster] [createCluster] [deleteCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the EKS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the EKS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.region* | The region in which EKS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-eks.configuration* | The AWS EKS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-iam-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-iam-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2520de6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-iam-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-iam-kafka-connector-sink]]
+= camel-aws2-iam-kafka-connector sink configuration
+
+When using camel-aws2-iam-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-iam-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-iam sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.iamClient* | To use a existing configured AWS IAM as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listAccessKeys] [createUser] [deleteUser] [getUser] [listUsers] [createAccessKey] [deleteAccessKey] [updateAccessKey] [createGroup] [deleteGroup] [listGroups] [addUserToGroup] [removeUserFromGroup] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the IAM client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the IAM client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which IAM client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.region* | The region in which IAM client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-iam.configuration* | The AWS IAM default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-kms-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-kms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..58da2bf
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-kms-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-kms-kafka-connector-sink]]
+= camel-aws2-kms-kafka-connector sink configuration
+
+When using camel-aws2-kms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-kms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-kms sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsClient* | To use a existing configured AWS KMS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listKeys] [createKey] [disableKey] [scheduleKeyDeletion] [describeKey] [enableKey] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the KMS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the KMS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which EKS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.region* | The region in which KMS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-kms.configuration* | The AWS KMS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-mq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-mq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..21c6acd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-mq-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-mq-kafka-connector-sink]]
+= camel-aws2-mq-kafka-connector sink configuration
+
+When using camel-aws2-mq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-mq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-mq sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonMqClient* | To use a existing configured AmazonMQClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. It can be listBrokers,createBroker,deleteBroker One of: [listBrokers] [createBroker] [deleteBroker] [rebootBroker] [updateBroker] [describeBroker] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MQ client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MQ client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MQ client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.region* | The region in which MQ client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-mq.configuration* | The AWS MQ default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-msk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-msk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..33038b0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-msk-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-aws2-msk-kafka-connector-sink]]
+= camel-aws2-msk-kafka-connector sink configuration
+
+When using camel-aws2-msk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-msk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-msk sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mskClient* | To use a existing configured AWS MSK as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [listClusters] [createCluster] [deleteCluster] [describeCluster] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the MSK client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the MSK client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which MSK client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.region* | The region in which MSK client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-msk.configuration* | The AWS MSK default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-ses-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-ses-kafka-sink-connector.adoc
new file mode 100644
index 0000000..13339a2
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-ses-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws2-ses-kafka-connector-sink]]
+= camel-aws2-ses-kafka-connector sink configuration
+
+When using camel-aws2-ses-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-ses-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-ses sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.from* | The sender's email address. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSESClient* | To use the AmazonSimpleEmailService as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SES client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SES client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SES client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToAddresses* | List of reply-to email address(es) for the message, override it using 'CamelAwsSesReplyToAddresses' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.returnPath* | The email address to which bounce notifications are to be forwarded, override it using 'CamelAwsSesReturnPath' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSesSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | List of destination email address. Can be overriden with 'CamelAwsSesTo' header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.region* | The region in which SES client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-ses.configuration* | The AWS SES default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-sns-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-sns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..11fdc78
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-sns-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-aws2-sns-kafka-connector-sink]]
+= camel-aws2-sns-kafka-connector sink configuration
+
+When using camel-aws2-sns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-sns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-sns sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topicNameOrArn* | Topic name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonSNSClient* | To use the AmazonSNS as the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateTopic* | Setting the autocreation of the topic | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageStructure* | The message structure to use such as json | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SNS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SNS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | The queueUrl to subscribe to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which SNS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the topic | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The subject which is used if the message header 'CamelAwsSnsSubject' is not present. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subscribeSNStoSQS* | Define if the subscription between SNS Topic and SQS must be done or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.region* | The region in which SNS client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sns.configuration* | The AWS SNS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-sqs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-sqs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e97db7d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-sqs-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-aws2-sqs-kafka-connector-sink]]
+= camel-aws2-sqs-kafka-connector sink configuration
+
+When using camel-aws2-sqs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-sqs sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delaySeconds* | Delay sending messages for a number of seconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageDeduplicationIdStrategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: useExchangeId, useContentBasedDeduplication. For the useContentBasedDeduplication option, no messageDeduplicationId will be set on the message. One of: [useExchangeId] [useContentBasedDeduplication] | "useExchangeId" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageGroupIdStrategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: useConstant, useExchangeId, usePropertyValue. For the usePropertyValue option, the value of property CamelAwsMessageGroupId will be used. One of: [useConstant] [useExchangeId] [usePropertyValue] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do in case the user don't want to send only a message One of: [sendBatchMessage] [deleteMessage] [listQueues] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveMessageWaitTimeSeconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-sqs-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-sqs-kafka-source-connector.adoc
new file mode 100644
index 0000000..bd55a6f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-sqs-kafka-source-connector.adoc
@@ -0,0 +1,86 @@
+// kafka-connector options: START
+[[camel-aws2-sqs-kafka-connector-source]]
+= camel-aws2-sqs-kafka-connector source configuration
+
+When using camel-aws2-sqs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-sqs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-sqs source connector supports 60 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.queueNameOrArn* | Queue name or ARN | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.amazonAWSHost* | The hostname of the Amazon AWS cloud. | "amazonaws.com" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.amazonSQSClient* | To use the AmazonSQS as client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateQueue* | Setting the autocreation of the queue | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to map headers to/from Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | The underlying protocol used to communicate with SQS | "https" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the SQS client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueOwnerAWSAccountId* | Specify the queue owner aws account id when you need to connect the queue with different account owner. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.region* | The region in which ECS client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attributeNames* | A list of attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Allows you to use multiple threads to poll the sqs queue to increase throughput | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultVisibilityTimeout* | The default visibility timeout (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteAfterRead* | Delete message from SQS after it has been read | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteIfFiltered* | Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendMessageVisibility* | If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it takes a long time to process the message. If set to true defaultVisibilityTimeout must be set. See details at Amazon docs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsDataKeyReusePeriodSeconds* | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours). Default: 300 (5 minutes). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kmsMasterKeyId* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageAttributeNames* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverSideEncryptionEnabled* | Define if Server Side Encryption is enabled or not on the queue | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.visibilityTimeout* | The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the com.amazonaws.services.sqs.model.SetQueueAttributesRequest. This only make sense if its different from defaultVisibilityTimeout. It changes the queue visibility timeout attribute permanently. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitTimeSeconds* | Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delayQueue* | Define if you want to apply delaySeconds option to the queue or on single messages | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueUrl* | To define the queueUrl explicitly. All other parameters, which would influence the queueUrl, are ignored. This parameter is intended to be used, to connect to a mock implementation of SQS, for testing purposes. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | To define a proxy host when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | To define a proxy port when instantiating the SQS client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumMessageSize* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageRetentionPeriod* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.policy* | The policy for this queue | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveMessageWaitTime Seconds* | If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.redrivePolicy* | Specify the policy that send message to DeadLetter queue. See detail at Amazon docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.region* | Specify the queue region which could be used with queueOwnerAWSAccountId to build the service URL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-sqs.configuration* | The AWS SQS default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-aws2-translate-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-aws2-translate-kafka-sink-connector.adoc
new file mode 100644
index 0000000..21cdc2b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-aws2-translate-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-aws2-translate-kafka-connector-sink]]
+= camel-aws2-translate-kafka-connector sink configuration
+
+When using camel-aws2-translate-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-aws2-translate-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-aws2-translate sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Logical name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autodetectSourceLanguage* | Being able to autodetect the source language | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform One of: [translateText] | "translateText" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyHost* | To define a proxy host when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | To define a proxy port when instantiating the Translate client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyProtocol* | To define a proxy protocol when instantiating the Translate client One of: [HTTP] [HTTPS] | "HTTPS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.region* | The region in which Translate client needs to work. When using this parameter, the configuration will expect the lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceLanguage* | Source language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetLanguage* | Target language to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.translateClient* | To use a existing configured AWS Translate as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.accessKey* | Amazon AWS Access Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.region* | The region in which Translate client needs to work | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.secretKey* | Amazon AWS Secret Key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.aws2-translate.configuration* | The AWS Translate default configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-azure-blob-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-azure-blob-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5a0278f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-azure-blob-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-azure-blob-kafka-connector-sink]]
+= camel-azure-blob-kafka-connector sink configuration
+
+When using camel-azure-blob-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-blob-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-blob sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.containerOrBlobUri* | Container or Blob compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.azureBlobClient* | The blob service client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobOffset* | Set the blob offset for the upload or download operations, default is 0 | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobType* | Set a blob type, 'blockblob' is default One of: [blockblob] [appendblob] [pageblob] | "blockblob" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.closeStreamAfterRead* | Close the stream after read or keep it open, default is true | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataLength* | Set the data length for the download or page blob upload operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileDir* | Set the file directory where the downloaded blobs will be saved to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicForRead* | Storage resources can be public for reading their content, if this property is enabled then the credentials do not have to be set | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamReadSize* | Set the minimum read size in bytes when reading the blob content | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobMetadata* | Set the blob meta-data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobPrefix* | Set a prefix which can be used for listing the blobs | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.closeStreamAfterWrite* | Close the stream after write or keep it open, default is true | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Blob service operation hint to the producer One of: [getBlob] [deleteBlob] [listBlobs] [updateBlockBlob] [uploadBlobBlocks] [commitBlobBlockList] [getBlobBlockList] [createAppendBlob] [updateAppendBlob] [createPageBlob] [updatePageBlob] [resizePageBlob] [clearPageBlob] [getPageBlobRanges] | "listBlobs" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamWriteSize* | Set the size of the buffer for writing block and page blocks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useFlatListing* | Specify if the flat or hierarchical blob listing should be used | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.configuration* | The Blob Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-azure-blob-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-azure-blob-kafka-source-connector.adoc
new file mode 100644
index 0000000..89cb815
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-azure-blob-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-azure-blob-kafka-connector-source]]
+= camel-azure-blob-kafka-connector source configuration
+
+When using camel-azure-blob-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-blob-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-blob source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.containerOrBlobUri* | Container or Blob compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.azureBlobClient* | The blob service client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blobOffset* | Set the blob offset for the upload or download operations, default is 0 | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blobType* | Set a blob type, 'blockblob' is default One of: [blockblob] [appendblob] [pageblob] | "blockblob" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeStreamAfterRead* | Close the stream after read or keep it open, default is true | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataLength* | Set the data length for the download or page blob upload operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileDir* | Set the file directory where the downloaded blobs will be saved to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicForRead* | Storage resources can be public for reading their content, if this property is enabled then the credentials do not have to be set | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamReadSize* | Set the minimum read size in bytes when reading the blob content | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-blob.configuration* | The Blob Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-azure-queue-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-azure-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d02ebf3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-azure-queue-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-azure-queue-kafka-connector-sink]]
+= camel-azure-queue-kafka-connector sink configuration
+
+When using camel-azure-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-queue sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.containerAndQueueUri* | Container Queue compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.azureQueueClient* | The queue service client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimeToLive* | Message Time To Live in seconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageVisibilityDelay* | Message Visibility Delay in seconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Queue service operation hint to the producer One of: [listQueues] [createQueue] [deleteQueue] [addMessage] [retrieveMessage] [peekMessage] [updateMessage] [deleteMessage] | "listQueues" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queuePrefix* | Set a prefix which can be used for listing the queues | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.configuration* | The Queue Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-azure-queue-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-azure-queue-kafka-source-connector.adoc
new file mode 100644
index 0000000..8491989
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-azure-queue-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-azure-queue-kafka-connector-source]]
+= camel-azure-queue-kafka-connector source configuration
+
+When using camel-azure-queue-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-azure-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-azure-queue source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.containerAndQueueUri* | Container Queue compact Uri | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.azureQueueClient* | The queue service client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.credentials* | Set the storage credentials, required in most cases | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.azure-queue.configuration* | The Queue Service configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-bean-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-bean-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ef39265
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-bean-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-bean-kafka-connector-sink]]
+= camel-bean-kafka-connector sink configuration
+
+When using camel-bean-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-bean-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-bean sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanName* | Sets the name of the bean to invoke | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cache* | Use scope option instead. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.method* | Sets the name of the method to invoke on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Used for configuring additional properties on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean.cache* | Use singleton option instead. | "true" | ConfigDef.Importance.LOW
+| *camel.component.bean.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using delegate scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.component.bean.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-bean-validator-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-bean-validator-kafka-sink-connector.adoc
new file mode 100644
index 0000000..939cf3e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-bean-validator-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-bean-validator-kafka-connector-sink]]
+= camel-bean-validator-kafka-connector sink configuration
+
+When using camel-bean-validator-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-bean-validator-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-bean-validator sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.label* | Where label is an arbitrary text value describing the endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.group* | To use a custom validation group | "javax.validation.groups.Default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreXmlConfiguration* | Whether to ignore data from the META-INF/validation.xml file. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.constraintValidatorFactory* | To use a custom ConstraintValidatorFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageInterpolator* | To use a custom MessageInterpolator | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.traversableResolver* | To use a custom TraversableResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validationProviderResolver* | To use a a custom ValidationProviderResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validatorFactory* | To use a custom ValidatorFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.ignoreXml Configuration* | Whether to ignore data from the META-INF/validation.xml file. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.constraintValidator Factory* | To use a custom ConstraintValidatorFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.messageInterpolator* | To use a custom MessageInterpolator | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.traversableResolver* | To use a custom TraversableResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bean-validator.validationProvider Resolver* | To use a a custom ValidationProviderResolver | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-beanstalk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-beanstalk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4a8a352
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-beanstalk-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-beanstalk-kafka-connector-sink]]
+= camel-beanstalk-kafka-connector sink configuration
+
+When using camel-beanstalk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-beanstalk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-beanstalk sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionSettings* | Connection settings host:port/tube | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.command* | put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned in beanstalk.jobId message header. delete, release, touch or bury expect Job ID in the message header beanstalk.jobId. Result of the operation is returned in beanstalk.result message header kick expects the number of jobs to kick in the message body and returns the number of jobs actually kicked out in the message header beanstalk.result. One of: [bury] [release] [put] [touch] [delete] [kick] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobDelay* | Job delay in seconds. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobPriority* | Job priority. (0 is the highest, see Beanstalk protocol) | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobTimeToRun* | Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.connectionSettings Factory* | Custom ConnectionSettingsFactory. Specify which ConnectionSettingsFactory to use to make connections to Beanstalkd. Especially useful for unit testing without beanstalkd daemon (you can mock ConnectionSettings) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-beanstalk-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-beanstalk-kafka-source-connector.adoc
new file mode 100644
index 0000000..5c93f8e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-beanstalk-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-beanstalk-kafka-connector-source]]
+= camel-beanstalk-kafka-connector source configuration
+
+When using camel-beanstalk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-beanstalk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-beanstalk source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionSettings* | Connection settings host:port/tube | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.command* | put means to put the job into Beanstalk. Job body is specified in the Camel message body. Job ID will be returned in beanstalk.jobId message header. delete, release, touch or bury expect Job ID in the message header beanstalk.jobId. Result of the operation is returned in beanstalk.result message header kick expects the number of jobs to kick in the message body and returns the number of jobs actually kicked out in the message header beanstalk.result. One of: [bury] [release] [put] [touch] [delete] [kick] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobDelay* | Job delay in seconds. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobPriority* | Job priority. (0 is the highest, see Beanstalk protocol) | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobTimeToRun* | Job time to run in seconds. (when 0, the beanstalkd daemon raises it to 1 automatically, see Beanstalk protocol) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.awaitJob* | Whether to wait for job to complete before ack the job from beanstalk | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onFailure* | Command to use when processing failed. One of: [bury] [release] [put] [touch] [delete] [kick] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useBlockIO* | Whether to use blockIO. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.connectionSettings Factory* | Custom ConnectionSettingsFactory. Specify which ConnectionSettingsFactory to use to make connections to Beanstalkd. Especially useful for unit testing without beanstalkd daemon (you can mock ConnectionSettings) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.beanstalk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-bonita-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-bonita-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6f91443
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-bonita-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-bonita-kafka-connector-sink]]
+= camel-bonita-kafka-connector sink configuration
+
+When using camel-bonita-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-bonita-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-bonita sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Operation to use One of: [startCase] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.hostname* | Hostname where Bonita engine runs | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | Port of the server hosting Bonita engine | "8080" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.processName* | Name of the process involved in the operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to authenticate to Bonita engine. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to authenticate to Bonita engine. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.bonita.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.bonita.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-box-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-box-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f09dd4f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-box-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-box-kafka-connector-sink]]
+= camel-box-kafka-connector sink configuration
+
+When using camel-box-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-box-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-box sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [COLLABORATIONS] [COMMENTS] [EVENT_LOGS] [FILES] [FOLDERS] [GROUPS] [EVENTS] [SEARCH] [TASKS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Box application client ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enterpriseId* | The enterprise ID to use for an App Enterprise. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId* | The user ID to use for an App User. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpParams* | Custom HTTP params for settings like proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenCache* | Custom Access Token Cache for storing and retrieving access tokens. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Box application client secret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryptionAlgorithm* | The type of encryption algorithm for JWT. Supported Algorithms: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512 One of: [RSA_SHA_256] [RSA_SHA_384] [RSA_SHA_512] | "RSA_SHA_256" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxCacheEntries* | The maximum number of access tokens in cache. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationType* | The type of authentication for connection. Types of Authentication: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens | "APP_USER_AUTHENTICATION" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFile* | The private key for generating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyPassword* | The password for the private key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKeyId* | The ID for public key for validating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Box user name, MUST be provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userPassword* | Box user password, MUST be provided if authSecureStorage is not set, or returns null on first call | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.box.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-box-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-box-kafka-source-connector.adoc
new file mode 100644
index 0000000..1c171dd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-box-kafka-source-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-box-kafka-connector-source]]
+= camel-box-kafka-connector source configuration
+
+When using camel-box-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-box-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-box source connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [COLLABORATIONS] [COMMENTS] [EVENT_LOGS] [FILES] [FOLDERS] [GROUPS] [EVENTS] [SEARCH] [TASKS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Box application client ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enterpriseId* | The enterprise ID to use for an App Enterprise. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | The user ID to use for an App User. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpParams* | Custom HTTP params for settings like proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenCache* | Custom Access Token Cache for storing and retrieving access tokens. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Box application client secret | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encryptionAlgorithm* | The type of encryption algorithm for JWT. Supported Algorithms: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512 One of: [RSA_SHA_256] [RSA_SHA_384] [RSA_SHA_512] | "RSA_SHA_256" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxCacheEntries* | The maximum number of access tokens in cache. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationType* | The type of authentication for connection. Types of Authentication: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens | "APP_USER_AUTHENTICATION" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyFile* | The private key for generating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyPassword* | The password for the private key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKeyId* | The ID for public key for validating the JWT signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Box user name, MUST be provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userPassword* | Box user password, MUST be provided if authSecureStorage is not set, or returns null on first call | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.box.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.box.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-braintree-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-braintree-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7e495f7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-braintree-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-braintree-kafka-connector-sink]]
+= camel-braintree-kafka-connector sink configuration
+
+When using camel-braintree-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-braintree-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-braintree sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [ADDON] [ADDRESS] [CLIENTTOKEN] [CREDITCARDVERIFICATION] [CUSTOMER] [DISCOUNT] [DISPUTE] [DOCUMENTUPLOAD] [MERCHANTACCOUNT] [PAYMENTMETHOD] [PAYMENTMETHODNONCE] [PLAN] [REPORT] [SETTLEMENTBATCHSUMMARY] [SUBSCRIPTION] [TRANSACTION] [WEBHOOKNOTIFICATION] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.environment* | The environment Either SANDBOX or PRODUCTION | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.merchantId* | The merchant id provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpReadTimeout* | Set read timeout for http calls. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpLogLevel* | Set logging level for http calls, see java.util.logging.Level | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpLogName* | Set log category to use to log http calls. | "Braintree" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to 'false' where an existing JUL - SLF4J logger bridge is on the classpath. This option can also be configured globally on the BraintreeComponent. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token granted by a merchant to another in order to process transactions on their behalf. Used in place of environment, merchant id, public key and private key fields. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | The private key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | The public key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to false where an existing JUL - SLF4J logger bridge is on the classpath. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-braintree-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-braintree-kafka-source-connector.adoc
new file mode 100644
index 0000000..cad945d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-braintree-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-braintree-kafka-connector-source]]
+= camel-braintree-kafka-connector source configuration
+
+When using camel-braintree-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-braintree-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-braintree source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [ADDON] [ADDRESS] [CLIENTTOKEN] [CREDITCARDVERIFICATION] [CUSTOMER] [DISCOUNT] [DISPUTE] [DOCUMENTUPLOAD] [MERCHANTACCOUNT] [PAYMENTMETHOD] [PAYMENTMETHODNONCE] [PLAN] [REPORT] [SETTLEMENTBATCHSUMMARY] [SUBSCRIPTION] [TRANSACTION] [WEBHOOKNOTIFICATION] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.environment* | The environment Either SANDBOX or PRODUCTION | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.merchantId* | The merchant id provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpReadTimeout* | Set read timeout for http calls. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpLogLevel* | Set logging level for http calls, see java.util.logging.Level | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpLogName* | Set log category to use to log http calls. | "Braintree" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to 'false' where an existing JUL - SLF4J logger bridge is on the classpath. This option can also be configured globally on the BraintreeComponent. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token granted by a merchant to another in order to process transactions on their behalf. Used in place of environment, merchant id, public key and private key fields. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | The private key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | The public key provided by Braintree. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.braintree.logHandlerEnabled* | Sets whether to enable the BraintreeLogHandler. It may be desirable to set this to false where an existing JUL - SLF4J logger bridge is on the classpath. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-browse-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-browse-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6f14e2a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-browse-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-browse-kafka-connector-sink]]
+= camel-browse-kafka-connector sink configuration
+
+When using camel-browse-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-browse-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-browse sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | A name which can be any string to uniquely identify the endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-browse-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-browse-kafka-source-connector.adoc
new file mode 100644
index 0000000..b6d19dc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-browse-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-browse-kafka-connector-source]]
+= camel-browse-kafka-connector source configuration
+
+When using camel-browse-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-browse-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-browse source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | A name which can be any string to uniquely identify the endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.browse.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-caffeine-cache-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-caffeine-cache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f58c287
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-caffeine-cache-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-caffeine-cache-kafka-connector-sink]]
+= camel-caffeine-cache-kafka-connector sink configuration
+
+When using camel-caffeine-cache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-caffeine-cache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-caffeine-cache sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | To configure the default cache action. If an action is set in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cache* | To configure an already instantiated cache to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheLoader* | To configure a CacheLoader in case of a LoadCache use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.evictionType* | Set the eviction Type for this cache One of: [size_based] [time_based] | "SIZE_BASED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterAccessTime* | Set the expire After Access Time in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterWriteTime* | Set the expire After Access Write in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialCapacity* | Set the initial Capacity for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumSize* | Set the maximum size for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.removalListener* | Set a specific removal Listener for the cache | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsCounter* | Set a specific Stats Counter for the cache stats | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsEnabled* | To enable stats on the cache | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-cache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-cache.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-cache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-caffeine-loadcache-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-caffeine-loadcache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e364c85
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-caffeine-loadcache-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-caffeine-loadcache-kafka-connector-sink]]
+= camel-caffeine-loadcache-kafka-connector sink configuration
+
+When using camel-caffeine-loadcache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-caffeine-loadcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-caffeine-loadcache sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | To configure the default cache action. If an action is set in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cache* | To configure an already instantiated cache to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheLoader* | To configure a CacheLoader in case of a LoadCache use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.evictionType* | Set the eviction Type for this cache One of: [size_based] [time_based] | "SIZE_BASED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterAccessTime* | Set the expire After Access Time in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expireAfterWriteTime* | Set the expire After Access Write in case of time based Eviction (in seconds) | 300 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialCapacity* | Set the initial Capacity for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumSize* | Set the maximum size for the cache | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.removalListener* | Set a specific removal Listener for the cache | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsCounter* | Set a specific Stats Counter for the cache stats | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statsEnabled* | To enable stats on the cache | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-loadcache.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-loadcache.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.caffeine-loadcache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-chatscript-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-chatscript-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5531947
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-chatscript-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-chatscript-kafka-connector-sink]]
+= camel-chatscript-kafka-connector sink configuration
+
+When using camel-chatscript-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-chatscript-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-chatscript sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname or IP of the server on which CS server is running | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port on which ChatScript is listening to | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.botName* | Name of the Bot in CS to converse with | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.chatUserName* | Username who initializes the CS conversation. To be set when chat is initialized from camel route | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resetChat* | Issues :reset command to start a new conversation everytime | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chatscript.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chatscript.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-chunk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-chunk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..88e10c4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-chunk-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-chunk-kafka-connector-sink]]
+= camel-chunk-kafka-connector sink configuration
+
+When using camel-chunk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-chunk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-chunk sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Define the encoding of the body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extension* | Define the file extension of the template | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.themeFolder* | Define the themes folder to scan | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.themeLayer* | Define the theme layer to elaborate | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.themeSubfolder* | Define the themes subfolder to scan | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chunk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.chunk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-class-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-class-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b283070
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-class-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-class-kafka-connector-sink]]
+= camel-class-kafka-connector sink configuration
+
+When using camel-class-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-class-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-class sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanName* | Sets the name of the bean to invoke | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cache* | Use scope option instead. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.method* | Sets the name of the method to invoke on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using prototype scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Used for configuring additional properties on the bean | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.class.cache* | Use singleton option instead. | "true" | ConfigDef.Importance.LOW
+| *camel.component.class.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.class.scope* | Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance multiple times while processing the request. The bean does not have to be thread-safe as the instance is only called from the same request. When using delegate scope, then the bean will be looked up or created per call. However in case of lookup then this is delegated to the bean registry such as Spring or CDI (if in use), which depends on their configuration can act as either singleton or prototype scope. so when using prototype then this depends on the delegated registry. One of: [Singleton] [Request] [Prototype] | "Singleton" | ConfigDef.Importance.MEDIUM
+| *camel.component.class.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cm-sms-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cm-sms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3476a61
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cm-sms-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-cm-sms-kafka-connector-sink]]
+= camel-cm-sms-kafka-connector sink configuration
+
+When using camel-cm-sms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cm-sms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cm-sms sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | SMS Provider HOST with scheme | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultFrom* | This is the sender name. The maximum length is 11 characters. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultMaxNumberOfParts* | If it is a multipart message forces the max number. Message can be truncated. Technically the gateway will first check if a message is larger than 160 characters, if so, the message will be cut into multiple 153 characters parts limited by these parameters. | 8 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.productToken* | The unique token to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.testConnectionOnStartup* | Whether to test the connection to the SMS Gateway on startup | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cm-sms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cm-sms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cmis-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cmis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f3dde1a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cmis-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-cmis-kafka-connector-sink]]
+= camel-cmis-kafka-connector sink configuration
+
+When using camel-cmis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cmis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cmis sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cmsUrl* | URL to the cmis repository | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.pageSize* | Number of nodes to retrieve per page | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readContent* | If set to true, the content of document node will be retrieved in addition to the properties | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readCount* | Max number of nodes to read | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repositoryId* | The Id of the repository to use. If not specified the first available repository is used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryMode* | If true, will execute the cmis query from the message body and return result, otherwise will create a node in the cmis repository | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cmis-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cmis-kafka-source-connector.adoc
new file mode 100644
index 0000000..253c4ce
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cmis-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-cmis-kafka-connector-source]]
+= camel-cmis-kafka-connector source configuration
+
+When using camel-cmis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cmis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cmis source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cmsUrl* | URL to the cmis repository | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.pageSize* | Number of nodes to retrieve per page | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readContent* | If set to true, the content of document node will be retrieved in addition to the properties | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readCount* | Max number of nodes to read | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repositoryId* | The Id of the repository to use. If not specified the first available repository is used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The cmis query to execute against the repository. If not specified, the consumer will retrieve every node from the content repository by iterating the content tree recursively | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for the cmis repository | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.sessionFacadeFactory* | To use a custom CMISSessionFacadeFactory to create the CMISSessionFacade instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cmis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coap+tcp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coap+tcp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..72bde9b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coap+tcp-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coap-tcp-kafka-connector-sink]]
+= camel-coap-tcp-kafka-connector sink configuration
+
+When using camel-coap-tcp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap-tcp sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coap+tcp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coap+tcp-kafka-source-connector.adoc
new file mode 100644
index 0000000..e01315a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coap+tcp-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coap-tcp-kafka-connector-source]]
+= camel-coap-tcp-kafka-connector source configuration
+
+When using camel-coap-tcp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap-tcp source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f538ff4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coap-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coap-kafka-connector-sink]]
+= camel-coap-kafka-connector sink configuration
+
+When using camel-coap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coap-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coap-kafka-source-connector.adoc
new file mode 100644
index 0000000..c2bb62e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coap-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coap-kafka-connector-source]]
+= camel-coap-kafka-connector source configuration
+
+When using camel-coap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coap source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coaps+tcp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coaps+tcp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86f71a7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coaps+tcp-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coaps-tcp-kafka-connector-sink]]
+= camel-coaps-tcp-kafka-connector sink configuration
+
+When using camel-coaps-tcp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps-tcp sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coaps+tcp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coaps+tcp-kafka-source-connector.adoc
new file mode 100644
index 0000000..c70f560
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coaps+tcp-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coaps-tcp-kafka-connector-source]]
+= camel-coaps-tcp-kafka-connector source configuration
+
+When using camel-coaps-tcp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps+tcp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps-tcp source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps-tcp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coaps-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coaps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..076b2d4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coaps-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-coaps-kafka-connector-sink]]
+= camel-coaps-kafka-connector sink configuration
+
+When using camel-coaps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-coaps-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-coaps-kafka-source-connector.adoc
new file mode 100644
index 0000000..1b7861f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-coaps-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-coaps-kafka-connector-source]]
+= camel-coaps-kafka-connector source configuration
+
+When using camel-coaps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-coaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-coaps source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | The URI for the CoAP endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alias* | Sets the alias used to query the KeyStore for the private key and certificate. This parameter is used when we are enabling TLS with certificates on the service side, and similarly on the client side when TLS is used with certificates and client authentication. If the parameter is not specified then the default behavior is to use the first alias in the keystore that contains a key entry. This configuration parameter does not apply to configuring TLS via a Raw Public Key or a Pre-Shared Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherSuites* | Sets the cipherSuites String. This is a comma separated String of ciphersuites to configure. If it is not specified, then it falls back to getting the ciphersuites from the sslContextParameters object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientAuthentication* | Sets the configuration options for server-side client-authentication requirements. The value must be one of NONE, WANT, REQUIRE. If this value is not specified, then it falls back to checking the sslContextParameters.getServerParameters().getClientAuthentication() value. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the configured private key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pskStore* | Set the PskStore to use for pre-shared key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicKey* | Set the configured public key for use with Raw Public Key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recommendedCipherSuitesOnly* | The CBC cipher suites are not recommended. If you want to use them, you first need to set the recommendedCipherSuitesOnly option to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Set the SSLContextParameters object for setting up TLS. This is required for coapstcp, and for coaps when we are using certificates for TLS (as opposed to RPK or PKS). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustedRpkStore* | Set the TrustedRpkStore to use to determine trust in raw public keys. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.coapMethodRestrict* | Comma separated list of methods that the CoAP consumer will bind to. The default is to bind to all methods (DELETE, GET, POST, PUT). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.coaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cometd-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cometd-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8c3ffe5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cometd-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-cometd-kafka-connector-sink]]
+= camel-cometd-kafka-connector sink configuration
+
+When using camel-cometd-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometd-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometd sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectLocalSession* | Whether to disconnect local sessions after publishing a message to its channel. Disconnecting local session is needed as they are not swept by default by CometD, and therefore you can run out of memory. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cometd-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cometd-kafka-source-connector.adoc
new file mode 100644
index 0000000..31656fd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cometd-kafka-source-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-cometd-kafka-connector-source]]
+= camel-cometd-kafka-connector source configuration
+
+When using camel-cometd-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometd-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometd source connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.source.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionHeadersEnabled* | Whether to include the server session headers in the Camel message when creating a Camel Message for incoming requests. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometd.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cometds-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cometds-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2d67630
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cometds-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-cometds-kafka-connector-sink]]
+= camel-cometds-kafka-connector sink configuration
+
+When using camel-cometds-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometds sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectLocalSession* | Whether to disconnect local sessions after publishing a message to its channel. Disconnecting local session is needed as they are not swept by default by CometD, and therefore you can run out of memory. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cometds-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cometds-kafka-source-connector.adoc
new file mode 100644
index 0000000..2a8b938
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cometds-kafka-source-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-cometds-kafka-connector-source]]
+= camel-cometds-kafka-connector source configuration
+
+When using camel-cometds-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cometds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cometds source connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Host port number | null | ConfigDef.Importance.HIGH
+| *camel.source.path.channelName* | The channelName represents a topic that can be subscribed to by the Camel endpoints. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowedOrigins* | The origins domain that support to cross, if the crosssOriginFilterOn is true | "*" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.baseResource* | The root directory for the web resources or classpath. Use the protocol file: or classpath: depending if you want that the component loads the resource from file system or classpath. Classpath is required for OSGI deployment where the resources are packaged in the jar | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.crossOriginFilterOn* | If true, the server will support for cross-domain filtering | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterPath* | The filterPath will be used by the CrossOriginFilter, if the crosssOriginFilterOn is true | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.interval* | The client side poll timeout in milliseconds. How long a client will wait between reconnects | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jsonCommented* | If true, the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logLevel* | Logging level. 0=none, 1=info, 2=debug. One of: [0] [1] [2] | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInterval* | The max client side poll timeout in milliseconds. A client will be removed if a connection is not received in this time. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multiFrameInterval* | The client side poll timeout, if multiple connections are detected from the same browser. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | The server side poll timeout in milliseconds. This is how long the server will hold a reconnect request before responding. | 240000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionHeadersEnabled* | Whether to include the server session headers in the Camel message when creating a Camel Message for incoming requests. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.extensions* | To use a list of custom BayeuxServer.Extension that allows modifying incoming and outgoing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.securityPolicy* | To use a custom configured SecurityPolicy to control authorization | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cometds.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-consul-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-consul-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0ba711c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-consul-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-consul-kafka-connector-sink]]
+= camel-consul-kafka-connector sink configuration
+
+When using camel-consul-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-consul-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-consul sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiEndpoint* | The API endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectTimeoutMillis* | Connect timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consulClient* | Reference to a com.orbitz.consul.Consul in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The default key. Can be overridden by CamelConsulKey | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pingInstance* | Configure if the AgentClient should attempt a ping before returning the Consul instance | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readTimeoutMillis* | Read timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tags* | Set tags. You can separate multiple tags by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeTimeoutMillis* | Write timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | The default action. Can be overridden by CamelConsulAction | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueAsString* | Default to transform values retrieved from Consul i.e. on KV endpoint to string. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistencyMode* | The consistencyMode used for queries, default ConsistencyMode.DEFAULT One of: [DEFAULT] [STALE] [CONSISTENT] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nearNode* | The near node to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeMeta* | The note meta-data to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-consul-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-consul-kafka-source-connector.adoc
new file mode 100644
index 0000000..9e35d6a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-consul-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-consul-kafka-connector-source]]
+= camel-consul-kafka-connector source configuration
+
+When using camel-consul-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-consul-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-consul source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiEndpoint* | The API endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectTimeoutMillis* | Connect timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consulClient* | Reference to a com.orbitz.consul.Consul in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.key* | The default key. Can be overridden by CamelConsulKey | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pingInstance* | Configure if the AgentClient should attempt a ping before returning the Consul instance | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeoutMillis* | Read timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tags* | Set tags. You can separate multiple tags by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeTimeoutMillis* | Write timeout for OkHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consistencyMode* | The consistencyMode used for queries, default ConsistencyMode.DEFAULT One of: [DEFAULT] [STALE] [CONSISTENT] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nearNode* | The near node to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodeMeta* | The note meta-data to use for queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blockSeconds* | The second to wait for a watch event, default 10 seconds | "10" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.firstIndex* | The first index for watch for, default 0 | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | Recursively watch, default false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.aclToken* | Sets the ACL token to be used with Consul | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.datacenter* | The data center | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.password* | Sets the password to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.sslContextParameters* | SSL configuration using an org.apache.camel.support.jsse.SSLContextParameters instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.url* | The Consul agent URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.userName* | Sets the username to be used for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.consul.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-controlbus-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-controlbus-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2162696
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-controlbus-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-controlbus-kafka-connector-sink]]
+= camel-controlbus-kafka-connector sink configuration
+
+When using camel-controlbus-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-controlbus-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-controlbus sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.command* | Command can be either route or language One of: [route] [language] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.language* | Allows you to specify the name of a Language to use for evaluating the message body. If there is any result from the evaluation, then the result is put in the message body. One of: [bean] [constant] [el] [exchangeProperty] [file] [groovy] [header] [jsonpath] [mvel] [ognl] [ref] [simple] [spel] [sql] [terser] [tokenize] [xpath] [xquery] [xtokenize] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | To denote an action that can be either: start, stop, or status. To either start or stop a route, or to get the status of the route as output in the message body. You can use suspend and resume from Camel 2.11.1 onwards to either suspend or resume a route. And from Camel 2.11.1 onwards you can use stats to get performance statics returned in XML format; the routeId option can be used to define which route to get the performance stats for, if routeId is not defined, then you get statistics for the entire CamelContext. The restart action will restart the route. One of: [start] [stop] [suspend] [resume] [restart] [status] [stats] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.async* | Whether to execute the control bus task asynchronously. Important: If this option is enabled, then any result from the task is not set on the Exchange. This is only possible if executing tasks synchronously. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingLevel* | Logging level used for logging when task is done, or if any exceptions occurred during processing the task. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "INFO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.restartDelay* | The delay in millis to use when restarting a route. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.routeId* | To specify a route by its id. The special keyword current indicates the current route. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.controlbus.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.controlbus.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-corda-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-corda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..aae4306
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-corda-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-corda-kafka-connector-sink]]
+= camel-corda-kafka-connector sink configuration
+
+When using camel-corda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-corda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-corda sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.node* | The url for the corda node | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.configuration* | To use a shared configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-corda-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-corda-kafka-source-connector.adoc
new file mode 100644
index 0000000..f46c0c5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-corda-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-corda-kafka-connector-source]]
+= camel-corda-kafka-connector source configuration
+
+When using camel-corda-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-corda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-corda source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.node* | The url for the corda node | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageSpecification* | PageSpecification allows specification of a page number (starting from 1) and page size (defaulting to 200 with a maximum page size of (Integer.MAX_INT) Note: we default the page number to 200 to enable queries without requiring a page specification but enabling detection of large results sets that fall out of the 200 requirement. Max page size should be used with extreme caution as results may exceed your JVM memory footprint. | "200" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processSnapshot* | Whether to process snapshots or not | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sort* | Sort allows specification of a set of entity attribute names and their associated directionality and null handling, to be applied upon processing a query specification. One of: [ASC] [DESC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contractStateClass* | A contract state (or just state) contains opaque data used by a contract program. It can be thought of as a disk file that the program can use to persist data across transactions. States are immutable: once created they are never updated, instead, any changes must generate a new successor state. States can be updated (consumed) only once: the notary is responsible for ensuring there is no double spending by only signing a transaction if the input states are all free. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flowLogicArguments* | Start the given flow with the given arguments, returning an Observable with a single observation of the result of running the flow. The flowLogicClass must be annotated with net.corda.core.flows.StartableByRPC. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flowLogicClass* | Start the given flow with the given arguments, returning an Observable with a single observation of the result of running the flow. The flowLogicClass must be annotated with net.corda.core.flows.StartableByRPC. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queryCriteria* | QueryCriteria assumes underlying schema tables are correctly indexed for performance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.configuration* | To use a shared configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.corda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-couchbase-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-couchbase-kafka-sink-connector.adoc
new file mode 100644
index 0000000..347ff4c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-couchbase-kafka-sink-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-couchbase-kafka-connector-sink]]
+= camel-couchbase-kafka-connector sink configuration
+
+When using camel-couchbase-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchbase sink connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.hostname* | The hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number to use | 8091 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bucket* | The bucket to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The key to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoStartIdForInserts* | Define if we want an autostart Id when we are doing an insert operation | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | "CCB_PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistTo* | Where to persist the data | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerRetryAttempts* | Define the number of retry attempts | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerRetryPause* | Define the retry pause between different attempts | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replicateTo* | Where to replicate the data | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.startingIdForInsertsFrom* | Define the starting Id where we are doing an insert operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalHosts* | The additional hosts | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnectDelay* | Define the max delay during a reconnection | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.obsPollInterval* | Define the observation polling interval | 400L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.obsTimeout* | Define the observation timeout | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.opQueueMaxBlockTime* | Define the max time an operation can be in queue blocked | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.opTimeOut* | Define the operation timeout | 2500L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readBufferSize* | Define the buffer size | 16384 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.shouldOptimize* | Define if we want to use optimization or not where possible | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeoutExceptionThreshold* | Define the threshold for throwing a timeout Exception | 998 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-couchbase-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-couchbase-kafka-source-connector.adoc
new file mode 100644
index 0000000..3cbbeb9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-couchbase-kafka-source-connector.adoc
@@ -0,0 +1,73 @@
+// kafka-connector options: START
+[[camel-couchbase-kafka-connector-source]]
+= camel-couchbase-kafka-connector source configuration
+
+When using camel-couchbase-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchbase source connector supports 47 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.hostname* | The hostname to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number to use | 8091 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bucket* | The bucket to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.key* | The key to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerProcessedStrategy* | Define the consumer Processed strategy to use | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.descending* | Define if this operation is descending or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.designDocumentName* | The design document name to use | "beer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | The output limit to use | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rangeEndKey* | Define a range for the end key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rangeStartKey* | Define a range for the start key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skip* | Define the skip to use | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.viewName* | The view name to use | "brewery_beers" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalHosts* | The additional hosts | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnectDelay* | Define the max delay during a reconnection | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.obsPollInterval* | Define the observation polling interval | 400L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.obsTimeout* | Define the observation timeout | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.opQueueMaxBlockTime* | Define the max time an operation can be in queue blocked | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.opTimeOut* | Define the operation timeout | 2500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readBufferSize* | Define the buffer size | 16384 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shouldOptimize* | Define if we want to use optimization or not where possible | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeoutExceptionThreshold* | Define the threshold for throwing a timeout Exception | 998 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-couchdb-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-couchdb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a0af766
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-couchdb-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-couchdb-kafka-connector-sink]]
+= camel-couchdb-kafka-connector sink configuration
+
+When using camel-couchdb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchdb sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use for communicating with the database. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.hostname* | Hostname of the running couchdb instance | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the running couchdb instance | 5984 | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.database* | Name of the database to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.createDatabase* | Creates the database if it does not already exist | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username in case of authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-couchdb-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-couchdb-kafka-source-connector.adoc
new file mode 100644
index 0000000..3c42e65
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-couchdb-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-couchdb-kafka-connector-source]]
+= camel-couchdb-kafka-connector source configuration
+
+When using camel-couchdb-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-couchdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-couchdb source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use for communicating with the database. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.hostname* | Hostname of the running couchdb instance | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the running couchdb instance | 5984 | ConfigDef.Importance.MEDIUM
+| *camel.source.path.database* | Name of the database to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.createDatabase* | Creates the database if it does not already exist | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deletes* | Document deletes are published as events | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeat* | How often to send an empty message to keep socket alive in millis | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.since* | Start tracking changes immediately after the given update sequence. The default, null, will start monitoring from the latest sequence. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.style* | Specifies how many revisions are returned in the changes array. The default, main_only, will only return the current winning revision; all_docs will return all leaf revisions (including conflicts and deleted former conflicts.) One of: [all_docs] [main_only] | "main_only" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.updates* | Document inserts/updates are published as events | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username in case of authenticated databases | null | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.couchdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cql-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9471e90
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cql-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-cql-kafka-connector-sink]]
+= camel-cql-kafka-connector sink configuration
+
+When using camel-cql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cql sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanRef* | beanRef is defined using bean:id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.hosts* | Hostname(s) cassansdra server(s). Multiple hosts can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port number of cassansdra server(s) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.keyspace* | Keyspace to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cluster* | To use the Cluster instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clusterName* | Cluster name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consistencyLevel* | Consistency level to use One of: [ANY] [ONE] [TWO] [THREE] [QUORUM] [ALL] [LOCAL_QUORUM] [EACH_QUORUM] [SERIAL] [LOCAL_SERIAL] [LOCAL_ONE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cql* | CQL query to perform. Can be overridden with the message header with key CamelCqlQuery. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loadBalancingPolicy* | To use a specific LoadBalancingPolicy | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatements* | Whether to use PreparedStatements or regular Statements | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultSetConversionStrategy* | To use a custom class that implements logic for converting ResultSet into message body ALL, ONE, LIMIT_10, LIMIT_100... | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | To use the Session instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cql-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cql-kafka-source-connector.adoc
new file mode 100644
index 0000000..5c7ea2b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cql-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-cql-kafka-connector-source]]
+= camel-cql-kafka-connector source configuration
+
+When using camel-cql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cql source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.beanRef* | beanRef is defined using bean:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.hosts* | Hostname(s) cassansdra server(s). Multiple hosts can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Port number of cassansdra server(s) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.keyspace* | Keyspace to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cluster* | To use the Cluster instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusterName* | Cluster name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consistencyLevel* | Consistency level to use One of: [ANY] [ONE] [TWO] [THREE] [QUORUM] [ALL] [LOCAL_QUORUM] [EACH_QUORUM] [SERIAL] [LOCAL_SERIAL] [LOCAL_ONE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cql* | CQL query to perform. Can be overridden with the message header with key CamelCqlQuery. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loadBalancingPolicy* | To use a specific LoadBalancingPolicy | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prepareStatements* | Whether to use PreparedStatements or regular Statements | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultSetConversionStrategy* | To use a custom class that implements logic for converting ResultSet into message body ALL, ONE, LIMIT_10, LIMIT_100... | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | To use the Session instance (you would normally not use this option) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for session authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cron-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cron-kafka-source-connector.adoc
new file mode 100644
index 0000000..2971df3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cron-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-cron-kafka-connector-source]]
+= camel-cron-kafka-connector source configuration
+
+When using camel-cron-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cron source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | The name of the cron trigger | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedule* | A cron expression that will be used to generate events | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cron.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cron.cronService* | The id of the CamelCronService to use when multiple implementations are provided | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-crypto-cms-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-crypto-cms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..676a02c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-crypto-cms-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-crypto-cms-kafka-connector-sink]]
+= camel-crypto-cms-kafka-connector sink configuration
+
+When using camel-crypto-cms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-crypto-cms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-crypto-cms sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cryptoOperation* | Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto-cms:sign sets sign as the operation. Possible values: sign, verify, encrypt, or decrypt. One of: [sign] [verify] [encrypt] [decrypt] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.name* | The name part in the URI can be chosen by the user to distinguish between different signer/verifier/encryptor/decryptor endpoints within the camel context. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.keyStore* | Keystore which contains signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keyStoreParameters'. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreParameters* | Keystore containing signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keystore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password of the private keys. It is assumed that all private keys in the keystore have the same password. If not set then it is assumed that the password of the private keys is given by the keystore password given in the KeyStoreParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromBase64* | If true then the CMS message is base 64 encoded and must be decoded during the processing. Default value is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentEncryptionAlgorithm* | Encryption algorithm, for example DESede/CBC/PKCS5Padding. Further possible values: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. One of: [AES/CBC/PKCS5Padding] [DESede/CBC/PKCS5Padding] [Camellia/CBC/PKCS5Padding] [CAST5/CBC/PKCS5Padding] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.originatorInformationProvider* | Provider for the originator info. See \https://tools.ietf.org/html/rfc5652#section-6.1. The default value is null. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recipient* | Recipient Info: reference to a bean which implements the interface org.apache.camel.component.crypto.cms.api.TransRecipientInfo | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKeyLength* | Key length for the secret symmetric key used for the content encryption. Only used if the specified content-encryption algorithm allows keys of different sizes. If contentEncryptionAlgorithm=AES/CBC/PKCS5Padding or Camellia/CBC/PKCS5Padding then 128; if contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; if strong encryption is enabled then for AES/CBC/PKCS5Padding and Camellia/CBC/PKCS5Padding also the key lengths 192 and 256 are possible. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.unprotectedAttributesGenerator Provider* | Provider of the generator for the unprotected attributes. The default value is null which means no unprotected attribute is added to the Enveloped Data object. See \https://tools.ietf.org/html/rfc5652#section-6.1. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toBase64* | Indicates whether the Signed Data or Enveloped Data instance shall be base 64 encoded. Default value is false. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeContent* | Indicates whether the signed content should be included into the Signed Data instance. If false then a detached Signed Data instance is created in the header CamelCryptoCmsSignedData. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signer* | Signer information: reference to bean(s) which implements org.apache.camel.component.crypto.cms.api.SignerInfo. Multiple values can be separated by comma | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signedDataHeaderBase64* | Indicates whether the value in the header CamelCryptoCmsSignedData is base64 encoded. Default value is false. Only relevant for detached signatures. In the detached signature case, the header contains the Signed Data object. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.verifySignaturesOfAllSigners* | If true then the signatures of all signers contained in the Signed Data object are verified. If false then only one signature whose signer info matches with one of the specified certificates is verified. Default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.envelopedDataDecryptor Configuration* | To configure the shared EnvelopedDataDecryptorConfiguration, which determines the uri parameters for the decrypt operation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto-cms.signedDataVerifier Configuration* | To configure the shared SignedDataVerifierConfiguration, which determines the uri parameters for the verify operation. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-crypto-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-crypto-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c485205
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-crypto-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-crypto-kafka-connector-sink]]
+= camel-crypto-kafka-connector sink configuration
+
+When using camel-crypto-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-crypto-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-crypto sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cryptoOperation* | Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto:sign sets sign as the operation. One of: [sign] [verify] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.name* | The logical name of this operation. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.algorithm* | Sets the JCE name of the Algorithm that should be used for the signer. | "SHA256withRSA" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alias* | Sets the alias used to query the KeyStore for keys and {link java.security.cert.Certificate Certificates} to be used in signing and verifying exchanges. This value can be provided at runtime via the message header org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certificateName* | Sets the reference name for a PrivateKey that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keystore* | Sets the KeyStore that can contain keys and Certficates for use in signing and verifying exchanges. A KeyStore is typically used with an alias, either one supplied in the Route definition or dynamically via the message header CamelSignatureKeyStoreAlias. If no alias is supplied and there is only a single entry in the Keystore, then this single entry will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keystoreName* | Sets the reference name for a Keystore that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the PrivateKey that should be used to sign the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyName* | Sets the reference name for a PrivateKey that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.provider* | Set the id of the security provider that provides the configured Signature algorithm. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKeyName* | references that should be resolved when the context changes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secureRandomName* | Sets the reference name for a SecureRandom that can be found in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signatureHeaderName* | Set the name of the message header that should be used to store the base64 encoded signature. This defaults to 'CamelDigitalSignature' | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Set the size of the buffer used to read in the Exchange payload data. | "2048" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certificate* | Set the Certificate that should be used to verify the signature in the exchange based on its payload. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearHeaders* | Determines if the Signature specific headers be cleared after signing and verification. Defaults to true, and should only be made otherwise at your extreme peril as vital private information such as Keys and passwords may escape if unset. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreParameters* | Sets the KeyStore that can contain keys and Certficates for use in signing and verifying exchanges based on the given KeyStoreParameters. A KeyStore is typically used with an alias, either one supplied in the Route definition or dynamically via the message header CamelSignatureKeyStoreAlias. If no alias is supplied and there is only a single entry in the Keystore, then this single entry will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publicKey* | Set the PublicKey that should be used to verify the signature in the exchange. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secureRandom* | Set the SecureRandom used to initialize the Signature service | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password used to access an aliased PrivateKey in the KeyStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.crypto.configuration* | To use the shared DigitalSignatureConfiguration as configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cxf-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cxf-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4317478
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cxf-kafka-sink-connector.adoc
@@ -0,0 +1,66 @@
+// kafka-connector options: START
+[[camel-cxf-kafka-connector-sink]]
+= camel-cxf-kafka-connector sink configuration
+
+When using camel-cxf-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxf sink connector supports 40 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanId* | To lookup an existing configured CxfEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataFormat* | The data type messages supported by the CXF endpoint. One of: [PAYLOAD] [RAW] [MESSAGE] [CXF_MESSAGE] [POJO] | "POJO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wrappedStyle* | The WSDL style that describes how parameters are represented in the SOAP body. If the value is false, CXF will chose the document-literal unwrapped style, If the value is true, CXF will chose the document-literal wrapped style | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultOperationName* | This option will set the default operationName that will be used by the CxfProducer which invokes the remote service. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultOperationNamespace* | This option will set the default operationNamespace that will be used by the CxfProducer which invokes the remote service. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostnameVerifier* | The hostname verifier to be used. Use the # notation to reference a HostnameVerifier from the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | The Camel SSL setting reference. Use the # notation to reference the SSL Context. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wrapped* | Which kind of operation that CXF endpoint producer will invoke | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cxfBinding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cxfConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure\{ServerClient\} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mergeProtocolHeaders* | Whether to merge protocol headers. If enabled then propagating headers between Camel and CXF becomes more consistent and similar. For more details see CAMEL-6393. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mtomEnabled* | To enable MTOM (attachments). This requires to use POJO or PAYLOAD data format mode. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.properties* | To set additional CXF options using the key/value pairs from the Map. For example to turn on stacktraces in SOAP faults, properties.faultStackTraceEnabled=true | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipPayloadMessagePartCheck* | Sets whether SOAP message validation should be disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound SOAP messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled and -1 for no limit. | 49152 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | This option is used to set the basic authentication information of password for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | This option is used to set the basic authentication information of username for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bindingId* | The bindingId for the service model to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The endpoint name this service is implementing, it maps to the wsdl:portname. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publishedEndpointUrl* | This option can override the endpointUrl that published from the WSDL which can be accessed with service address url plus wsd | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceClass* | The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceName* | The service name this service is implementing, it maps to the wsdl:servicename. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wsdlURL* | The location of the WSDL. Can be on the classpath, file system, or be hosted remotely. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cxf-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cxf-kafka-source-connector.adoc
new file mode 100644
index 0000000..be118f9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cxf-kafka-source-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-cxf-kafka-connector-source]]
+= camel-cxf-kafka-connector source configuration
+
+When using camel-cxf-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxf source connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.beanId* | To lookup an existing configured CxfEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataFormat* | The data type messages supported by the CXF endpoint. One of: [PAYLOAD] [RAW] [MESSAGE] [CXF_MESSAGE] [POJO] | "POJO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.wrappedStyle* | The WSDL style that describes how parameters are represented in the SOAP body. If the value is false, CXF will chose the document-literal unwrapped style, If the value is true, CXF will chose the document-literal wrapped style | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cxfBinding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cxfConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure\{ServerClient\} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mergeProtocolHeaders* | Whether to merge protocol headers. If enabled then propagating headers between Camel and CXF becomes more consistent and similar. For more details see CAMEL-6393. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mtomEnabled* | To enable MTOM (attachments). This requires to use POJO or PAYLOAD data format mode. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.properties* | To set additional CXF options using the key/value pairs from the Map. For example to turn on stacktraces in SOAP faults, properties.faultStackTraceEnabled=true | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipPayloadMessagePartCheck* | Sets whether SOAP message validation should be disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound SOAP messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled and -1 for no limit. | 49152 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | This option is used to set the basic authentication information of password for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | This option is used to set the basic authentication information of username for the CXF client. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindingId* | The bindingId for the service model to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The endpoint name this service is implementing, it maps to the wsdl:portname. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publishedEndpointUrl* | This option can override the endpointUrl that published from the WSDL which can be accessed with service address url plus wsd | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceClass* | The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceName* | The service name this service is implementing, it maps to the wsdl:servicename. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.wsdlURL* | The location of the WSDL. Can be on the classpath, file system, or be hosted remotely. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.allowStreaming* | This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxf.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cxfrs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cxfrs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5410bb4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cxfrs-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-cxfrs-kafka-connector-sink]]
+= camel-cxfrs-kafka-connector sink configuration
+
+When using camel-cxfrs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxfrs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxfrs sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanId* | To lookup an existing configured CxfRsEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.features* | Set the feature list to the CxfRs endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound REST messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.modelRef* | This option is used to specify the model file which is useful for the resource class without annotation. When using this option, then the service class can be omitted, to emulate document-only endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.providers* | Set custom JAX-RS provider(s) list to the CxfRs endpoint. You can specify a string with a list of providers to lookup in the registy separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceClasses* | The resource classes which you want to export as REST service. Multiple classes can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLocations* | Sets the locations of the schema(s) which can be used to validate the incoming XML or JAXB-driven JSON. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostnameVerifier* | The hostname verifier to be used. Use the # notation to reference a HostnameVerifier from the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | The Camel SSL setting reference. Use the # notation to reference the SSL Context. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | This option tells the CxfRsProducer to inspect return codes and will generate an Exception if the return code is larger than 207. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientAPI* | If it is true, the CxfRsProducer will use the HttpClientAPI to invoke the service. If it is false, the CxfRsProducer will use the ProxyClientAPI to invoke the service | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreDeleteMethodMessageBody* | This option is used to tell CxfRsProducer to ignore the message body of the DELETE method when using HTTP API. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxClientCacheSize* | This option allows you to configure the maximum size of the cache. The implementation caches CXF clients or ClientFactoryBean in CxfProvider and CxfRsProvider. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cxfRsConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.performInvocation* | When the option is true, Camel will perform the invocation of the resource class instance and put the response object into the exchange for further processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateContexts* | When the option is true, JAXRS UriInfo, HttpHeaders, Request and SecurityContext contexts will be available to custom CXFRS processors as typed Camel exchange properties. These contexts can be used to analyze the current requests using JAX-RS API. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-cxfrs-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-cxfrs-kafka-source-connector.adoc
new file mode 100644
index 0000000..9e6011a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-cxfrs-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-cxfrs-kafka-connector-source]]
+= camel-cxfrs-kafka-connector source configuration
+
+When using camel-cxfrs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-cxfrs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-cxfrs source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.beanId* | To lookup an existing configured CxfRsEndpoint. Must used bean: as prefix. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.address* | The service publish address. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.features* | Set the feature list to the CxfRs endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingFeatureEnabled* | This option enables CXF Logging Feature which writes inbound and outbound REST messages to log. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingSizeLimit* | To limit the total size of number of bytes the logger will output when logging feature has been enabled. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.modelRef* | This option is used to specify the model file which is useful for the resource class without annotation. When using this option, then the service class can be omitted, to emulate document-only endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.providers* | Set custom JAX-RS provider(s) list to the CxfRs endpoint. You can specify a string with a list of providers to lookup in the registy separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceClasses* | The resource classes which you want to export as REST service. Multiple classes can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaLocations* | Sets the locations of the schema(s) which can be used to validate the incoming XML or JAXB-driven JSON. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFaultLogging* | This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindingStyle* | Sets how requests and responses will be mapped to/from Camel. Two values are possible: SimpleConsumer: This binding style processes request parameters, multiparts, etc. and maps them to IN headers, IN attachments and to the message body. It aims to eliminate low-level processing of org.apache.cxf.message.MessageContentsList. It also also adds more flexibility and simplicity to the response mapping. Only available for consumers. Default: The default style. For consumers this passes on a MessageContentsList to the route, requiring low-level processing in the route. This is the traditional binding style, which simply dumps the org.apache.cxf.message.MessageContentsList coming in from the CXF stack onto the IN message body. The user is then responsible for processing it according to the contract defined by the JAX-RS method signature. Custom: allows you to specify a custom binding through the binding option. One of: [SimpleConsumer] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publishedEndpointUrl* | This option can override the endpointUrl that published from the WADL which can be accessed with resource address url plus _wadl | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceBeans* | The service beans (the bean ids to lookup in the registry) which you want to export as REST service. Multiple beans can be separated by comma | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bus* | To use a custom configured CXF Bus. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.continuationTimeout* | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cxfRsConfigurer* | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultBus* | Will set the default bus when CXF endpoint create a bus by itself | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.performInvocation* | When the option is true, Camel will perform the invocation of the resource class instance and put the response object into the exchange for further processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.propagateContexts* | When the option is true, JAXRS UriInfo, HttpHeaders, Request and SecurityContext contexts will be available to custom CXFRS processors as typed Camel exchange properties. These contexts can be used to analyze the current requests using JAX-RS API. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.cxfrs.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dataformat-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dataformat-kafka-sink-connector.adoc
new file mode 100644
index 0000000..47da491
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dataformat-kafka-sink-connector.adoc
@@ -0,0 +1,33 @@
+// kafka-connector options: START
+[[camel-dataformat-kafka-connector-sink]]
+= camel-dataformat-kafka-connector sink configuration
+
+When using camel-dataformat-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataformat-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataformat sink connector supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of data format | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.operation* | Operation to use either marshal or unmarshal One of: [marshal] [unmarshal] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataformat.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataformat.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dataset-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dataset-kafka-sink-connector.adoc
new file mode 100644
index 0000000..052ec2b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dataset-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-dataset-kafka-connector-sink]]
+= camel-dataset-kafka-connector sink configuration
+
+When using camel-dataset-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataset-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataset sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of DataSet to lookup in the registry | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataSetIndex* | Controls the behaviour of the CamelDataSetIndex header. For Consumers: - off = the header will not be set - strict/lenient = the header will be set For Producers: - off = the header value will not be verified, and will not be set if it is not present = strict = the header value must be present and will be verified = lenient = the header value will be verified if it is present, and will be set if it is not present One of: [strict] [lenient] [off] | "lenient" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.assertPeriod* | Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid. This is used for example to assert that exactly a number of messages arrives. For example if expectedMessageCount(int) was set to 5, then the assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 messages arrives, then you would need to wait a little period to ensure no further message arrives. This is what you can use this method for. By default this period is disabled. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumeDelay* | Allows a delay to be specified which causes a delay when a message is consumed by the producer (to simulate slow processing) | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expectedCount* | Specifies the expected number of message exchanges that should be received by this endpoint. Beware: If you want to expect that 0 messages, then take extra care, as 0 matches when the tests starts, so you need to set a assert period time to let the test run for a while to make sure there are still no messages arrived; for that use setAssertPeriod(long). An alternative is to use NotifyBuilder, and use the notifier to know when Camel is done routing some messages, before you call the assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times. If you want to assert that exactly n'th message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failFast* | Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportGroup* | A number that is used to turn on throughput logging based on groups of the size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultMinimumWaitTime* | Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultWaitTime* | Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainFirst* | Specifies to only retain the first n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the first 10 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainLast* | Specifies to only retain the last n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the last 20 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForEmptyTest* | Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyOnExchange* | Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. Is by default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dataset-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dataset-kafka-source-connector.adoc
new file mode 100644
index 0000000..32aacb1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dataset-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-dataset-kafka-connector-source]]
+= camel-dataset-kafka-connector source configuration
+
+When using camel-dataset-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataset-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataset source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of DataSet to lookup in the registry | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataSetIndex* | Controls the behaviour of the CamelDataSetIndex header. For Consumers: - off = the header will not be set - strict/lenient = the header will be set For Producers: - off = the header value will not be verified, and will not be set if it is not present = strict = the header value must be present and will be verified = lenient = the header value will be verified if it is present, and will be set if it is not present One of: [strict] [lenient] [off] | "lenient" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Time period in millis to wait before starting sending messages. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minRate* | Wait until the DataSet contains at least this number of messages | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preloadSize* | Sets how many messages should be preloaded (sent) before the route completes its initialization | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.produceDelay* | Allows a delay to be specified which causes a delay when a message is sent by the consumer (to simulate slow processing) | 3L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dataset-test-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dataset-test-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8dd94fc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dataset-test-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-dataset-test-kafka-connector-sink]]
+= camel-dataset-test-kafka-connector sink configuration
+
+When using camel-dataset-test-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dataset-test-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dataset-test sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of endpoint to lookup in the registry to use for polling messages used for testing | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.anyOrder* | Whether the expected messages should arrive in the same order or can be in any order. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.assertPeriod* | Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid. This is used for example to assert that exactly a number of messages arrives. For example if expectedMessageCount(int) was set to 5, then the assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 messages arrives, then you would need to wait a little period to ensure no further message arrives. This is what you can use this method for. By default this period is disabled. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiter* | The split delimiter to use when split is enabled. By default the delimiter is new line based. The delimiter can be a regular expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expectedCount* | Specifies the expected number of message exchanges that should be received by this endpoint. Beware: If you want to expect that 0 messages, then take extra care, as 0 matches when the tests starts, so you need to set a assert period time to let the test run for a while to make sure there are still no messages arrived; for that use setAssertPeriod(long). An alternative is to use NotifyBuilder, and use the notifier to know when Camel is done routing some messages, before you call the assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times. If you want to assert that exactly n'th message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failFast* | Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportGroup* | A number that is used to turn on throughput logging based on groups of the size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultMinimumWaitTime* | Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultWaitTime* | Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainFirst* | Specifies to only retain the first n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the first 10 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainLast* | Specifies to only retain the last n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the last 20 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForEmptyTest* | Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.split* | If enabled the messages loaded from the test endpoint will be split using new line delimiters so each line is an expected message. For example to use a file endpoint to load a file where each line is an expected message. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout to use when polling for message bodies from the URI | 2000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyOnExchange* | Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. Is by default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset-test.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dataset-test.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-debezium-mongodb-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-debezium-mongodb-kafka-source-connector.adoc
new file mode 100644
index 0000000..086a8d1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-debezium-mongodb-kafka-source-connector.adoc
@@ -0,0 +1,74 @@
+// kafka-connector options: START
+[[camel-debezium-mongodb-kafka-connector-source]]
+= camel-debezium-mongodb-kafka-connector source configuration
+
+When using camel-debezium-mongodb-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-mongodb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-mongodb source connector supports 48 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.collectionBlacklist* | Description is not available here, please check Debezium website for corresponding key 'collection.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.collectionWhitelist* | The collections for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectBackoffInitialDelayMs* | The initial delay when trying to reconnect to a primary after a connection cannot be made or when no primary is available. Defaults to 1 second (1000 ms). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectBackoffMaxDelayMs* | The maximum delay when trying to reconnect to a primary after a connection cannot be made or when no primary is available. Defaults to 120 second (120,000 ms). | 120000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectMaxAttempts* | Maximum number of failed connection attempts to a replica set primary before an exception occurs and task is aborted. Defaults to 16, which with the defaults for 'connect.backoff.initial.delay.ms' and 'connect.backoff.max.delay.ms' results in just over 20 minutes of attempts before failing. | 16 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseBlacklist* | The databases for which changes are to be excluded | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseWhitelist* | The databases for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fieldBlacklist* | Description is not available here, please check Debezium website for corresponding key 'field.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fieldRenames* | Description is not available here, please check Debezium website for corresponding key 'field.renames' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialSyncMaxThreads* | Maximum number of threads used to perform an intial sync of the collections in a replica set. Defaults to 1. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbHosts* | The hostname and port pairs (in the form 'host' or 'host:port') of the MongoDB server(s) in the replica set. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbMembersAutoDiscover* | Specifies whether the addresses in 'hosts' are seeds that should be used to discover all members of the cluster or replica set ('true'), or whether the address(es) in 'hosts' should be used as is ('false'). The default is 'true'. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbName* | Unique name that identifies the MongoDB replica set or cluster and all recorded offsets, andthat is used as a prefix for all schemas and topics. Each distinct MongoDB installation should have a separate namespace and monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.mongodbPassword* | Password to be used when connecting to MongoDB, if necessary. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.mongodbSslEnabled* | Should connector use SSL to connect to MongoDB instances | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbSslInvalidHostname Allowed* | Whether invalid host names are allowed when using SSL. If true the connection will not prevent man-in-the-middle attacks | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongodbUser* | Database user for connecting to MongoDB, if necessary. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'initial' (the default) to specify the connector should always perform an initial sync when required; 'never' to specify the connector should never perform an initial sync | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mongodb.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mongodb.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mongodb.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-debezium-mysql-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-debezium-mysql-kafka-source-connector.adoc
new file mode 100644
index 0000000..5b71b6d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-debezium-mysql-kafka-source-connector.adoc
@@ -0,0 +1,104 @@
+// kafka-connector options: START
+[[camel-debezium-mysql-kafka-connector-source]]
+= camel-debezium-mysql-kafka-connector source configuration
+
+When using camel-debezium-mysql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-mysql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-mysql source connector supports 78 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bigintUnsignedHandlingMode* | Specify how BIGINT UNSIGNED columns should be represented in change events, including:'precise' uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'long' (the default) represents values using Java's 'long', which may not offer the precision but will be far easier to use in consumers. | "long" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binlogBufferSize* | The size of a look-ahead buffer used by the binlog reader to decide whether the transaction in progress is going to be committed or rolled back. Use 0 to disable look-ahead buffering. Defaults to 0 (i.e. buffering is disabled). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.columnBlacklist* | Description is not available here, please check Debezium website for corresponding key 'column.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectKeepAlive* | Whether a separate thread should be used to ensure the connection is kept alive. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectKeepAliveIntervalMs* | Interval in milliseconds to wait for connection checking if keep alive thread is used. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeoutMs* | Maximum time in milliseconds to wait after trying to connect to the database before timing out. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseBlacklist* | Description is not available here, please check Debezium website for corresponding key 'database.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistory* | The name of the DatabaseHistory class that should be used to store and recover database schema changes. The configuration properties for the history are prefixed with the 'database.history.' string. | "io.debezium.relational.history.FileDatabaseHistory" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafka BootstrapServers* | A list of host/port pairs that the connector will use for establishing the initial connection to the Kafka cluster for retrieving database schema history previously stored by the connector. This should point to the same Kafka cluster used by the Kafka Connect process. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery Attempts* | The number of attempts in a row that no data are returned from Kafka before recover completes. The maximum amount of time to wait after receiving no data is (recovery.attempts) x (recovery.poll.interval.ms). | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery PollIntervalMs* | The number of milliseconds to wait while polling for persisted data during recovery. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaTopic* | The name of the topic for the database schema history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistorySkip UnparseableDdl* | Controls the action Debezium will take when it meets a DDL statement in binlog, that it cannot parse.By default the connector will stop operating but by changing the setting it can ignore the statements which it cannot parse. If skipping is enabled then Debezium can miss metadata changes. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryStoreOnly MonitoredTablesDdl* | Controls what DDL will Debezium store in database history.By default (false) Debezium will store all incoming DDL statements. If set to truethen only DDL that manipulates a monitored table will be stored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHostname* | Resolvable hostname or IP address of the MySQL database server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseInitialStatements* | A semicolon separated list of SQL statements to be executed when a JDBC connection (not binlog reading connection) to the database is established. Note that the connector may establish JDBC connections at its own discretion, so this should typically be used for configuration of session parameters only,but not for executing DML statements. Use doubled semicolon (';;') to use a semicolon as a character and not as a delimiter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseJdbcDriver* | JDBC Driver class name used to connect to the MySQL database server. | "class com.mysql.cj.jdbc.Driver" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databasePassword* | Password of the MySQL database user to be used when connecting to the database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databasePort* | Port of the MySQL database server. | 3306 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerId* | A numeric ID of this database client, which must be unique across all currently-running database processes in the cluster. This connector joins the MySQL database cluster as another server (with this unique ID) so it can read the binlog. By default, a random number is generated between 5400 and 6400. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerIdOffset* | Only relevant if parallel snapshotting is configured. During parallel snapshotting, multiple (4) connections open to the database client, and they each need their own unique connection ID. This offset is used to generate those IDs from the base configured cluster ID. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerName* | Unique name that identifies the database server and all recorded offsets, and that is used as a prefix for all schemas and topics. Each distinct installation should have a separate namespace and be monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databaseSslKeystore* | Location of the Java keystore file containing an application process's own certificate and private key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslKeystorePassword* | Password to access the private key from the keystore file specified by 'ssl.keystore' configuration property or the 'javax.net.ssl.keyStore' system or JVM property. This password is used to unlock the keystore file (store password), and to decrypt the private key stored in the keystore (key password). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslMode* | Whether to use an encrypted connection to MySQL. Options include'disabled' (the default) to use an unencrypted connection; 'preferred' to establish a secure (encrypted) connection if the server supports secure connections, but fall back to an unencrypted connection otherwise; 'required' to use a secure (encrypted) connection, and fail if one cannot be established; 'verify_ca' like 'required' but additionally verify the server TLS certificate against the configured Certificate Authority (CA) certificates, or fail if no valid matching CA certificates are found; or'verify_identity' like 'verify_ca' but additionally verify that the server certificate matches the host to which the connection is attempted. | "disabled" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslTruststore* | Location of the Java truststore file containing the collection of CA certificates trusted by this application process (trust store). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslTruststore Password* | Password to unlock the keystore file (store password) specified by 'ssl.trustore' configuration property or the 'javax.net.ssl.trustStore' system or JVM property. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseUser* | Name of the MySQL database user to be used when connecting to the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseWhitelist* | The databases for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decimalHandlingMode* | Specify how DECIMAL and NUMERIC columns should be represented in change events, including:'precise' (the default) uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to represent values; 'double' represents values using Java's 'double', which may not offer the precision but will be far easier to use in consumers. | "precise" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableTimeAdjuster* | MySQL allows user to insert year value as either 2-digit or 4-digit. In case of two digit the value is automatically mapped into 1970 - 2069.false - delegates the implicit conversion to the databasetrue - (the default) Debezium makes the conversion | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventDeserializationFailure HandlingMode* | Specify how failures during deserialization of binlog events (i.e. when encountering a corrupted event) should be handled, including:'fail' (the default) an exception indicating the problematic event and its binlog position is raised, causing the connector to be stopped; 'warn' the problematic event and its binlog position will be logged and the event will be skipped;'ignore' the problematic event will be skipped. | "fail" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidNewChannelPosition* | If set to 'latest', when connector sees new GTID, it will start consuming gtid channel from the server latest executed gtid position. If 'earliest' connector starts reading channel from first available (not purged) gtid position on the server. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidSourceExcludes* | The source UUIDs used to exclude GTID ranges when determine the starting position in the MySQL server's binlog. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidSourceFilterDmlEvents* | If set to true, we will only produce DML events into Kafka for transactions that were written on mysql servers with UUIDs matching the filters defined by the gtid.source.includes or gtid.source.excludes configuration options, if they are specified. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gtidSourceIncludes* | The source UUIDs used to include GTID ranges when determine the starting position in the MySQL server's binlog. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeQuery* | Whether the connector should include the original SQL query that generated the change event. Note: This option requires MySQL be configured with the binlog_rows_query_log_events option set to ON. Query will not be present for events generated from snapshot. WARNING: Enabling this option may expose tables or fields explicitly blacklisted or masked by including the original SQL statement in the change event. For this reason the default value is 'false'. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeSchemaChanges* | Whether the connector should publish changes in the database schema to a Kafka topic with the same name as the database server ID. Each schema change will be recorded using a key that contains the database name and whose value includes the DDL statement(s).The default is 'true'. This is independent of how the connector internally records database history. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inconsistentSchemaHandling Mode* | Specify how binlog events that belong to a table missing from internal schema representation (i.e. internal representation is not consistent with database) should be handled, including:'fail' (the default) an exception indicating the problematic event and its binlog position is raised, causing the connector to be stopped; 'warn' the problematic event and its binlog position will be logged and the event will be skipped;'ignore' the problematic event will be skipped. | "fail" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageKeyColumns* | A semicolon-separated list of expressions that match fully-qualified tables and column(s) to be used as message key. Each expression must match the pattern ':',where the table names could be defined as (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the specific connector,and the key columns are a comma-separated list of columns representing the custom key. For any table without an explicit key configuration the table's primary key column(s) will be used as message key.Example: dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotLockingMode* | Controls how long the connector holds onto the global read lock while it is performing a snapshot. The default is 'minimal', which means the connector holds the global read lock (and thus prevents any updates) for just the initial portion of the snapshot while the database schemas and other metadata are being read. The remaining work in a snapshot involves selecting all rows from each table, and this can be done using the snapshot process' REPEATABLE READ transaction even when the lock is no longer held and other operations are updating the database. However, in some cases it may be desirable to block all writes for the entire duration of the snapshot; in such cases set this property to 'extended'. Using a value of 'none' will prevent the connector from acquiring any table locks during the snapshot process. This mode can only be used in combination with snapshot.mode values of 'schema_only' or 'schema_only_recovery' and is only safe to use if no schema changes are happening while the snapshot is taken. | "minimal" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'when_needed' to specify that the connector run a snapshot upon startup whenever it deems it necessary; 'initial' (the default) to specify the connector can run a snapshot only when no offsets are available for the logical server name; 'initial_only' same as 'initial' except the connector should stop after completing the snapshot and before it would normally read the binlog; and'never' to specify the connector should never run a snapshot and that upon first startup the connector should read from the beginning of the binlog. The 'never' mode should be used with care, and only when the binlog is known to contain all history. | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotNewTables* | BETA FEATURE: On connector restart, the connector will check if there have been any new tables added to the configuration, and snapshot them. There is presently only two options:'off': Default behavior. Do not snapshot new tables.'parallel': The snapshot of the new tables will occur in parallel to the continued binlog reading of the old tables. When the snapshot completes, an independent binlog reader will begin reading the events for the new tables until it catches up to present time. At this point, both old and new binlog readers will be momentarily halted and new binlog reader will start that will read the binlog for all configured tables. The parallel binlog reader will have a configured server id of 10000 the primary binlog reader's server id. | "off" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotSelectStatement Overrides* | This property contains a comma-separated list of fully-qualified tables (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on thespecific connectors . Select statements for the individual tables are specified in further configuration properties, one for each table, identified by the id 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME', respectively. The value of those properties is the select statement to use when retrieving data from the specific table during snapshotting. A possible use case for large append-only tables is setting a specific point where to start (resume) snapshotting, in case a previous snapshotting was interrupted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableBlacklist* | Description is not available here, please check Debezium website for corresponding key 'table.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableIgnoreBuiltin* | Flag specifying whether built-in tables should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableWhitelist* | The tables for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timePrecisionMode* | Time, date and timestamps can be represented with different kinds of precisions, including:'adaptive_time_microseconds': the precision of date and timestamp values is based the database column's precision; but time fields always use microseconds precision;'connect': always represents time, date and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, which uses millisecond precision regardless of the database columns' precision. | "adaptive_time_microseconds" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mysql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mysql.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-mysql.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-debezium-postgres-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-debezium-postgres-kafka-source-connector.adoc
new file mode 100644
index 0000000..b596f5f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-debezium-postgres-kafka-source-connector.adoc
@@ -0,0 +1,96 @@
+// kafka-connector options: START
+[[camel-debezium-postgres-kafka-connector-source]]
+= camel-debezium-postgres-kafka-connector source configuration
+
+When using camel-debezium-postgres-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-postgres-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-postgres source connector supports 70 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.columnBlacklist* | Description is not available here, please check Debezium website for corresponding key 'column.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseDbname* | The name of the database the connector should be monitoring | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHostname* | Resolvable hostname or IP address of the Postgres database server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseInitialStatements* | A semicolon separated list of SQL statements to be executed when a JDBC connection to the database is established. Note that the connector may establish JDBC connections at its own discretion, so this should typically be used for configurationof session parameters only, but not for executing DML statements. Use doubled semicolon (';;') to use a semicolon as a character and not as a delimiter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databasePassword* | Password of the Postgres database user to be used when connecting to the database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databasePort* | Port of the Postgres database server. | 5432 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerName* | Unique name that identifies the database server and all recorded offsets, and that is used as a prefix for all schemas and topics. Each distinct installation should have a separate namespace and be monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databaseSslcert* | File containing the SSL Certificate for the client. See the Postgres SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslfactory* | A name of class to that creates SSL Sockets. Use org.postgresql.ssl.NonValidatingFactory to disable SSL validation in development environments | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslkey* | File containing the SSL private key for the client. See the Postgres SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslmode* | Whether to use an encrypted connection to Postgres. Options include'disable' (the default) to use an unencrypted connection; 'require' to use a secure (encrypted) connection, and fail if one cannot be established; 'verify-ca' like 'required' but additionally verify the server TLS certificate against the configured Certificate Authority (CA) certificates, or fail if no valid matching CA certificates are found; or'verify-full' like 'verify-ca' but additionally verify that the server certificate matches the host to which the connection is attempted. | "disable" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslpassword* | Password to access the client private key from the file specified by 'database.sslkey'. See the Postgres SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseSslrootcert* | File containing the root certificate(s) against which the server is validated. See the Postgres JDBC SSL docs for further information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseTcpkeepalive* | Enable or disable TCP keep-alive probe to avoid dropping TCP connection | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseUser* | Name of the Postgres database user to be used when connecting to the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decimalHandlingMode* | Specify how DECIMAL and NUMERIC columns should be represented in change events, including:'precise' (the default) uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to represent values; 'double' represents values using Java's 'double', which may not offer the precision but will be far easier to use in consumers. | "precise" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hstoreHandlingMode* | Specify how HSTORE columns should be represented in change events, including:'json' represents values as json string'map' (default) represents values using java.util.Map | "json" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeUnknownDatatypes* | Specify whether the fields of data type not supported by Debezium should be processed:'false' (the default) omits the fields; 'true' converts the field into an implementation dependent binary representation. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.intervalHandlingMode* | Specify how INTERVAL columns should be represented in change events, including:'string' represents values as an exact ISO formatted string'numeric' (default) represents values using the inexact conversion into microseconds | "numeric" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageKeyColumns* | A semicolon-separated list of expressions that match fully-qualified tables and column(s) to be used as message key. Each expression must match the pattern ':',where the table names could be defined as (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the specific connector,and the key columns are a comma-separated list of columns representing the custom key. For any table without an explicit key configuration the table's primary key column(s) will be used as message key.Example: dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pluginName* | The name of the Postgres logical decoding plugin installed on the server. Supported values are 'decoderbufs' and 'wal2json'. Defaults to 'decoderbufs'. | "decoderbufs" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publicationName* | The name of the Postgres 10 publication used for streaming changes from a plugin.Defaults to 'dbz_publication' | "dbz_publication" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaBlacklist* | The schemas for which events must not be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaRefreshMode* | Specify the conditions that trigger a refresh of the in-memory schema for a table. 'columns_diff' (the default) is the safest mode, ensuring the in-memory schema stays in-sync with the database table's schema at all times. 'columns_diff_exclude_unchanged_toast' instructs the connector to refresh the in-memory schema cache if there is a discrepancy between it and the schema derived from the incoming message, unless unchanged TOASTable data fully accounts for the discrepancy. This setting can improve connector performance significantly if there are frequently-updated tables that have TOASTed data that are rarely part of these updates. However, it is possible for the in-memory schema to become outdated if TOASTable columns are dropped from the table. | "columns_diff" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaWhitelist* | The schemas for which events should be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotDropOnStop* | Whether or not to drop the logical replication slot when the connector finishes orderlyBy default the replication is kept so that on restart progress can resume from the last recorded location | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotMaxRetries* | How many times to retry connecting to a replication slot when an attempt fails. | 6 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotName* | The name of the Postgres logical decoding slot created for streaming changes from a plugin.Defaults to 'debezium | "debezium" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotRetryDelayMs* | The number of milli-seconds to wait between retry attempts when the connector fails to connect to a replication slot. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotStreamParams* | Any optional parameters used by logical decoding plugin. Semi-colon separated. E.g. 'add-tables=public.table,public.table2;include-lsn=true' | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotCustomClass* | When 'snapshot.mode' is set as custom, this setting must be set to specify a fully qualified class name to load (via the default class loader).This class must implement the 'Snapshotter' interface and is called on each app boot to determine whether to do a snapshot and how to build queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotLockTimeoutMs* | The maximum number of millis to wait for table locks at the beginning of a snapshot. If locks cannot be acquired in this time frame, the snapshot will be aborted. Defaults to 10 seconds | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'always' to specify that the connector run a snapshot each time it starts up; 'initial' (the default) to specify the connector can run a snapshot only when no offsets are available for the logical server name; 'initial_only' same as 'initial' except the connector should stop after completing the snapshot and before it would normally start emitting changes;'never' to specify the connector should never run a snapshot and that upon first startup the connector should read from the last position (LSN) recorded by the server; and'exported' to specify the connector should run a snapshot based on the position when the replication slot was created; 'custom' to specify a custom class with 'snapshot.custom_class' which will be loaded and used to determine the snapshot, see docs for more details. | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotSelectStatement Overrides* | This property contains a comma-separated list of fully-qualified tables (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on thespecific connectors . Select statements for the individual tables are specified in further configuration properties, one for each table, identified by the id 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME', respectively. The value of those properties is the select statement to use when retrieving data from the specific table during snapshotting. A possible use case for large append-only tables is setting a specific point where to start (resume) snapshotting, in case a previous snapshotting was interrupted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statusUpdateIntervalMs* | Frequency in milliseconds for sending replication connection status updates to the server. Defaults to 10 seconds (10000 ms). | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableBlacklist* | Description is not available here, please check Debezium website for corresponding key 'table.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableWhitelist* | The tables for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timePrecisionMode* | Time, date, and timestamps can be represented with different kinds of precisions, including:'adaptive' (the default) bases the precision of time, date, and timestamp values on the database column's precision; 'adaptive_time_microseconds' like 'adaptive' mode, but TIME fields always use microseconds precision;'connect' always represents time, date, and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, which uses millisecond precision regardless of the database columns' precision . | "adaptive" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toastedValuePlaceholder* | Specify the constant that will be provided by Debezium to indicate that the original value is a toasted value not provided by the database.If starts with 'hex:' prefix it is expected that the rest of the string repesents hexadecimally encoded octets. | "__debezium_unavailable_value" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.xminFetchIntervalMs* | Specify how often (in ms) the xmin will be fetched from the replication slot. This xmin value is exposed by the slot which gives a lower bound of where a new replication slot could start from. The lower the value, the more likely this value is to be the current 'true' value, but the bigger the performance cost. The bigger the value, the less likely this value is to be the current 'true' value, but the lower the performance penalty. The default is set to 0 ms, which disables tracking xmin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-postgres.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-postgres.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-postgres.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-debezium-sqlserver-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-debezium-sqlserver-kafka-source-connector.adoc
new file mode 100644
index 0000000..e6ea8f7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-debezium-sqlserver-kafka-source-connector.adoc
@@ -0,0 +1,78 @@
+// kafka-connector options: START
+[[camel-debezium-sqlserver-kafka-connector-source]]
+= camel-debezium-sqlserver-kafka-connector source configuration
+
+When using camel-debezium-sqlserver-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-debezium-sqlserver-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-debezium-sqlserver source connector supports 52 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Unique name for the connector. Attempting to register again with the same name will fail. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Additional properties for debezium components in case they can't be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalKeyConverter* | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.internalValueConverter* | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | "org.apache.kafka.connect.json.JsonConverter" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitPolicy* | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | "io.debezium.embedded.spi.OffsetCommitPolicy.PeriodicCommitOffsetPolicy" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetCommitTimeoutMs* | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetFlushIntervalMs* | Interval at which to try committing offsets. The default is 1 minute. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorage* | The name of the Java class that is responsible for persistence of connector offsets. | "org.apache.kafka.connect.storage.FileOffsetBackingStore" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageFileName* | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStoragePartitions* | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageReplication Factor* | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetStorageTopic* | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.columnBlacklist* | Description is not available here, please check Debezium website for corresponding key 'column.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseDbname* | The name of the database the connector should be monitoring. When working with a multi-tenant set-up, must be set to the CDB name. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistory* | The name of the DatabaseHistory class that should be used to store and recover database schema changes. The configuration properties for the history are prefixed with the 'database.history.' string. | "io.debezium.relational.history.FileDatabaseHistory" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryFileFilename* | The path to the file that will be used to record the database history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafka BootstrapServers* | A list of host/port pairs that the connector will use for establishing the initial connection to the Kafka cluster for retrieving database schema history previously stored by the connector. This should point to the same Kafka cluster used by the Kafka Connect process. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery Attempts* | The number of attempts in a row that no data are returned from Kafka before recover completes. The maximum amount of time to wait after receiving no data is (recovery.attempts) x (recovery.poll.interval.ms). | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaRecovery PollIntervalMs* | The number of milliseconds to wait while polling for persisted data during recovery. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHistoryKafkaTopic* | The name of the topic for the database schema history | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseHostname* | Resolvable hostname or IP address of the SQL Server database server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databasePassword* | Password of the SQL Server database user to be used when connecting to the database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databasePort* | Port of the SQL Server database server. | 1433 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseServerName* | Unique name that identifies the database server and all recorded offsets, and that is used as a prefix for all schemas and topics. Each distinct installation should have a separate namespace and be monitored by at most one Debezium connector. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.databaseServerTimezone* | The timezone of the server used to correctly shift the commit transaction timestamp on the client sideOptions include: Any valid Java ZoneId | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseUser* | Name of the SQL Server database user to be used when connecting to the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decimalHandlingMode* | Specify how DECIMAL and NUMERIC columns should be represented in change events, including:'precise' (the default) uses java.math.BigDecimal to represent values, which are encoded in the change events using a binary representation and Kafka Connect's 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to represent values; 'double' represents values using Java's 'double', which may not offer the precision but will be far easier to use in consumers. | "precise" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatTopicsPrefix* | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | "__debezium-heartbeat" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBatchSize* | Maximum size of each batch of source records. Defaults to 2048. | 2048 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxQueueSize* | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageKeyColumns* | A semicolon-separated list of expressions that match fully-qualified tables and column(s) to be used as message key. Each expression must match the pattern ':',where the table names could be defined as (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the specific connector,and the key columns are a comma-separated list of columns representing the custom key. For any table without an explicit key configuration the table's primary key column(s) will be used as message key.Example: dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollIntervalMs* | Frequency in milliseconds to wait for new change events to appear after receiving no events. Defaults to 500ms. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotDelayMs* | The number of milliseconds to delay before a snapshot will begin. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotFetchSize* | The maximum number of records that should be loaded into memory while performing a snapshot | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotLockTimeoutMs* | The maximum number of millis to wait for table locks at the beginning of a snapshot. If locks cannot be acquired in this time frame, the snapshot will be aborted. Defaults to 10 seconds | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotMode* | The criteria for running a snapshot upon startup of the connector. Options include: 'initial' (the default) to specify the connector should run a snapshot only when no offsets are available for the logical server name; 'schema_only' to specify the connector should run a snapshot of the schema when no offsets are available for the logical server name. | "initial" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snapshotSelectStatement Overrides* | This property contains a comma-separated list of fully-qualified tables (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on thespecific connectors . Select statements for the individual tables are specified in further configuration properties, one for each table, identified by the id 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME', respectively. The value of those properties is the select statement to use when retrieving data from the specific table during snapshotting. A possible use case for large append-only tables is setting a specific point where to start (resume) snapshotting, in case a previous snapshotting was interrupted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sourceStructVersion* | A version of the format of the publicly visible source part in the message | "v2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableBlacklist* | Description is not available here, please check Debezium website for corresponding key 'table.blacklist' description. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableIgnoreBuiltin* | Flag specifying whether built-in tables should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tableWhitelist* | The tables for which changes are to be captured | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timePrecisionMode* | Time, date, and timestamps can be represented with different kinds of precisions, including:'adaptive' (the default) bases the precision of time, date, and timestamp values on the database column's precision; 'adaptive_time_microseconds' like 'adaptive' mode, but TIME fields always use microseconds precision;'connect' always represents time, date, and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, which uses millisecond precision regardless of the database columns' precision . | "adaptive" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tombstonesOnDelete* | Whether delete operations should be represented by a delete event and a subsquenttombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-sqlserver.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-sqlserver.configuration* | Allow pre-configured Configurations to be set. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.debezium-sqlserver.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-digitalocean-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-digitalocean-kafka-sink-connector.adoc
new file mode 100644
index 0000000..03fdda5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-digitalocean-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-digitalocean-kafka-connector-sink]]
+= camel-digitalocean-kafka-connector sink configuration
+
+When using camel-digitalocean-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-digitalocean-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-digitalocean sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | The operation to perform to the given resource. One of: [create] [update] [delete] [list] [ownList] [get] [listBackups] [listActions] [listNeighbors] [listSnapshots] [listKernels] [listAllNeighbors] [enableBackups] [disableBackups] [reboot] [powerCycle] [shutdown] [powerOn] [powerOff] [restore] [resetPassword] [resize] [rebuild] [rename] [changeKernel] [enableIpv6] [enablePrivateNetworking] [takeSnapshot] [transfer] [convert] [attach] [detach] [assign] [unassign] [tag] [untag] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.page* | Use for pagination. Force the page number. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.perPage* | Use for pagination. Set the number of item per request. The maximum number of results per page is 200. | "25" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resource* | The DigitalOcean resource type on which perform the operation. One of: [account] [actions] [blockStorages] [droplets] [mages] [snapshots] [keys] [regions] [sizes] [floatingIPs] [tags] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.digitalOceanClient* | To use a existing configured DigitalOceanClient as client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | Set a proxy host if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | Set a proxy password if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | Set a proxy port if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | Set a proxy host if needed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthToken* | DigitalOcean OAuth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.digitalocean.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.digitalocean.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-direct-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-direct-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8c94742
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-direct-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-direct-kafka-connector-sink]]
+= camel-direct-kafka-connector sink configuration
+
+When using camel-direct-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of direct endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a DIRECT endpoint with no active consumers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-direct-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-direct-kafka-source-connector.adoc
new file mode 100644
index 0000000..c789d64
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-direct-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-direct-kafka-connector-source]]
+= camel-direct-kafka-connector source configuration
+
+When using camel-direct-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of direct endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-direct-vm-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-direct-vm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a7f958c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-direct-vm-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-direct-vm-kafka-connector-sink]]
+= camel-direct-vm-kafka-connector sink configuration
+
+When using camel-direct-vm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct-vm sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of direct-vm endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a Direct-VM endpoint with no active consumers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.block* | If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the consumer to become active. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.timeout* | The timeout value to use if block is enabled. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.headerFilterStrategy* | Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-direct-vm-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-direct-vm-kafka-source-connector.adoc
new file mode 100644
index 0000000..2718051
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-direct-vm-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-direct-vm-kafka-connector-source]]
+= camel-direct-vm-kafka-connector source configuration
+
+When using camel-direct-vm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-direct-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-direct-vm source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of direct-vm endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.headerFilterStrategy* | Sets a HeaderFilterStrategy that will only be applied on producer endpoints (on both directions: request and response). Default value: none. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.direct-vm.propagateProperties* | Whether to propagate or not properties from the producer side to the consumer side, and vice versa. Default value: true. | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-disruptor-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-disruptor-kafka-sink-connector.adoc
new file mode 100644
index 0000000..72517e0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-disruptor-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-disruptor-kafka-connector-sink]]
+= camel-disruptor-kafka-connector sink configuration
+
+When using camel-disruptor-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full Disruptor will block until the ringbuffer's capacity is no longer exhausted. By default, the calling thread will block and wait until the message can be accepted. By disabling this option, an exception will be thrown stating that the queue is full. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerType* | Defines the producers allowed on the Disruptor. The options allowed are: Multi to allow multiple producers and Single to enable certain optimizations only allowed when one concurrent producer (on one thread or otherwise synchronized) is active. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor.defaultBlockWhenFull* | To configure the default value for block when full The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultProducerType* | To configure the default value for DisruptorProducerType The default value is Multi. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-disruptor-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-disruptor-kafka-source-connector.adoc
new file mode 100644
index 0000000..503d2f6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-disruptor-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-disruptor-kafka-connector-source]]
+= camel-disruptor-kafka-connector source configuration
+
+When using camel-disruptor-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use Disruptor for Publish-Subscribe messaging. That is, you can send a message to the queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitStrategy* | Defines the strategy used by consumer threads to wait on new exchanges to be published. The options allowed are:Blocking, Sleeping, BusySpin and Yielding. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultConcurrent Consumers* | To configure the default number of concurrent consumers | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultMultipleConsumers* | To configure the default value for multiple consumers | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.defaultWaitStrategy* | To configure the default value for DisruptorWaitStrategy The default value is Blocking. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-disruptor-vm-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-disruptor-vm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..404655b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-disruptor-vm-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-disruptor-vm-kafka-connector-sink]]
+= camel-disruptor-vm-kafka-connector sink configuration
+
+When using camel-disruptor-vm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor-vm sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full Disruptor will block until the ringbuffer's capacity is no longer exhausted. By default, the calling thread will block and wait until the message can be accepted. By disabling this option, an exception will be thrown stating that the queue is full. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerType* | Defines the producers allowed on the Disruptor. The options allowed are: Multi to allow multiple producers and Single to enable certain optimizations only allowed when one concurrent producer (on one thread or otherwise synchronized) is active. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor-vm.defaultBlockWhenFull* | To configure the default value for block when full The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultProducerType* | To configure the default value for DisruptorProducerType The default value is Multi. One of: [Single] [Multi] | "Multi" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-disruptor-vm-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-disruptor-vm-kafka-source-connector.adoc
new file mode 100644
index 0000000..233ea3a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-disruptor-vm-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-disruptor-vm-kafka-connector-source]]
+= camel-disruptor-vm-kafka-connector source configuration
+
+When using camel-disruptor-vm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-disruptor-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-disruptor-vm source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the Disruptors ringbuffer Will be effectively increased to the nearest power of two. Notice: Mind if you use this option, then its the first endpoint being created with the queue name, that determines the size. To make sure all endpoints use same size, then configure the size option on all of them, or the first endpoint being created. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use Disruptor for Publish-Subscribe messaging. That is, you can send a message to the queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitStrategy* | Defines the strategy used by consumer threads to wait on new exchanges to be published. The options allowed are:Blocking, Sleeping, BusySpin and Yielding. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.bufferSize* | To configure the ring buffer size | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.queueSize* | To configure the ring buffer size | null | ConfigDef.Importance.LOW
+| *camel.component.disruptor-vm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultConcurrent Consumers* | To configure the default number of concurrent consumers | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultMultiple Consumers* | To configure the default value for multiple consumers | false | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.defaultWaitStrategy* | To configure the default value for DisruptorWaitStrategy The default value is Blocking. One of: [Blocking] [Sleeping] [BusySpin] [Yielding] | "Blocking" | ConfigDef.Importance.MEDIUM
+| *camel.component.disruptor-vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dns-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dns-kafka-sink-connector.adoc
new file mode 100644
index 0000000..85ef17d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dns-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-dns-kafka-connector-sink]]
+= camel-dns-kafka-connector sink configuration
+
+When using camel-dns-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dns-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dns sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.dnsType* | The type of the lookup. One of: [dig] [ip] [lookup] [wikipedia] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dns.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dns.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-docker-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-docker-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b41f89f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-docker-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-docker-kafka-connector-sink]]
+= camel-docker-kafka-connector sink configuration
+
+When using camel-docker-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-docker-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-docker sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Which operation to use One of: [events] [stats] [auth] [info] [ping] [version] [imagebuild] [imagecreate] [imageinspect] [imagelist] [imagepull] [imagepushimageremove] [imagesearch] [imagetag] [containerattach] [containercommit] [containercopyfile] [containercreate] [containerdiffinspectcontainer] [containerkill] [containerlist] [containerlog] [containerpause] [containerrestart] [containerremove] [containerstartcontainerstop] [containertop] [containerunpause] [containerwait] [execcreate] [execstart] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.email* | Email address associated with the user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Docker host | "localhost" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.port* | Docker port | "2375" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Request timeout for response (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cmdExecFactory* | The fully qualified class name of the DockerCmdExecFactory implementation to use | "com.github.dockerjava.netty.NettyDockerCmdExecFactory" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirectFilter* | Whether to follow redirect filter | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggingFilter* | Whether to use logging filter | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPerRouteConnections* | Maximum route connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | Maximum total connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Additional configuration parameters as key/value pairs | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverAddress* | Server address for docker registry. | "https://index.docker.io/v1/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socket* | Socket connection mode | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certPath* | Location containing the SSL certificate chain | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Use HTTPS communication | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tlsVerify* | Check TLS | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | User name to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.configuration* | To use the shared docker configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-docker-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-docker-kafka-source-connector.adoc
new file mode 100644
index 0000000..e1ee5ea
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-docker-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-docker-kafka-connector-source]]
+= camel-docker-kafka-connector source configuration
+
+When using camel-docker-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-docker-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-docker source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.operation* | Which operation to use One of: [events] [stats] [auth] [info] [ping] [version] [imagebuild] [imagecreate] [imageinspect] [imagelist] [imagepull] [imagepushimageremove] [imagesearch] [imagetag] [containerattach] [containercommit] [containercopyfile] [containercreate] [containerdiffinspectcontainer] [containerkill] [containerlist] [containerlog] [containerpause] [containerrestart] [containerremove] [containerstartcontainerstop] [containertop] [containerunpause] [containerwait] [execcreate] [execstart] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.email* | Email address associated with the user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.host* | Docker host | "localhost" | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.port* | Docker port | "2375" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeout* | Request timeout for response (in seconds) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cmdExecFactory* | The fully qualified class name of the DockerCmdExecFactory implementation to use | "com.github.dockerjava.netty.NettyDockerCmdExecFactory" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.followRedirectFilter* | Whether to follow redirect filter | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggingFilter* | Whether to use logging filter | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPerRouteConnections* | Maximum route connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxTotalConnections* | Maximum total connections | "100" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | Additional configuration parameters as key/value pairs | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverAddress* | Server address for docker registry. | "https://index.docker.io/v1/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socket* | Socket connection mode | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.certPath* | Location containing the SSL certificate chain | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Use HTTPS communication | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tlsVerify* | Check TLS | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | User name to authenticate with | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.configuration* | To use the shared docker configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.docker.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dozer-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dozer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..167cf11
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dozer-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-dozer-kafka-connector-sink]]
+= camel-dozer-kafka-connector sink configuration
+
+When using camel-dozer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dozer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dozer sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | A human readable name of the mapping. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingConfiguration* | The name of a DozerBeanMapperConfiguration bean in the Camel registry which should be used for configuring the Dozer mapping. This is an alternative to the mappingFile option that can be used for fine-grained control over how Dozer is configured. Remember to use a # prefix in the value to indicate that the bean is in the Camel registry (e.g. #myDozerConfig). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingFile* | The location of a Dozer configuration file. The file is loaded from the classpath by default, but you can use file:, classpath:, or http: to load the configuration from a specific location. | "dozerBeanMapping.xml" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marshalId* | The id of a dataFormat defined within the Camel Context to use for marshalling the mapping output to a non-Java type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceModel* | Fully-qualified class name for the source type used in the mapping. If specified, the input to the mapping is converted to the specified type before being mapped with Dozer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetModel* | Fully-qualified class name for the target type used in the mapping. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.unmarshalId* | The id of a dataFormat defined within the Camel Context to use for unmarshalling the mapping input from a non-Java type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dozer.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dozer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-drill-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-drill-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7f35ebd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-drill-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-drill-kafka-connector-sink]]
+= camel-drill-kafka-connector sink configuration
+
+When using camel-drill-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-drill-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-drill sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Host name or IP address | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clusterId* | Cluster ID \https://drill.apache.org/docs/using-the-jdbc-driver/#determining-the-cluster-id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.directory* | Drill directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mode* | Connection mode: zk: Zookeeper drillbit: Drillbit direct connection \https://drill.apache.org/docs/using-the-jdbc-driver/ One of: [ZK] [DRILLBIT] | "ZK" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | Port number | "2181" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.drill.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.drill.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dropbox-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dropbox-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a1a1398
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dropbox-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-dropbox-kafka-connector-sink]]
+= camel-dropbox-kafka-connector sink configuration
+
+When using camel-dropbox-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dropbox-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dropbox sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | The specific action (typically is a CRUD action) to perform on Dropbox remote folder. One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | The access token to make API requests for a specific Dropbox user | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.client* | To use an existing DbxClient instance as DropBox client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientIdentifier* | Name of the app registered to make API requests | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.localPath* | Optional folder or file to upload on Dropbox from the local filesystem. If this option has not been configured then the message body is used as the content to upload. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.newRemotePath* | Destination file or folder | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files will be matched. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remotePath* | Original file or folder to move | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uploadMode* | Which mode to upload. in case of add the new file will be renamed if a file with the same name already exists on dropbox. in case of force if a file with the same name already exists on dropbox, this will be overwritten. One of: [add] [force] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-dropbox-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-dropbox-kafka-source-connector.adoc
new file mode 100644
index 0000000..6c5e686
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-dropbox-kafka-source-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-dropbox-kafka-connector-source]]
+= camel-dropbox-kafka-connector source configuration
+
+When using camel-dropbox-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-dropbox-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-dropbox source connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.operation* | The specific action (typically is a CRUD action) to perform on Dropbox remote folder. One of: [put] [del] [search] [get] [move] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | The access token to make API requests for a specific Dropbox user | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.client* | To use an existing DbxClient instance as DropBox client. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientIdentifier* | Name of the app registered to make API requests | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localPath* | Optional folder or file to upload on Dropbox from the local filesystem. If this option has not been configured then the message body is used as the content to upload. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.newRemotePath* | Destination file or folder | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files will be matched. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remotePath* | Original file or folder to move | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uploadMode* | Which mode to upload. in case of add the new file will be renamed if a file with the same name already exists on dropbox. in case of force if a file with the same name already exists on dropbox, this will be overwritten. One of: [add] [force] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.dropbox.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ehcache-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ehcache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5dcbed3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ehcache-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-ehcache-kafka-connector-sink]]
+= camel-ehcache-kafka-connector sink configuration
+
+When using camel-ehcache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ehcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ehcache sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | To configure the default cache action. If an action is set in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurations* | A map of cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfiguration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfigurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cachesConfigurations* | A map of caches configurations to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ehcache-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ehcache-kafka-source-connector.adoc
new file mode 100644
index 0000000..b5974c5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ehcache-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-ehcache-kafka-connector-source]]
+= camel-ehcache-kafka-connector source configuration
+
+When using camel-ehcache-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ehcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ehcache source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | the cache name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createCacheIfNotExist* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventFiring* | Set the delivery mode (synchronous, asynchronous) One of: [ASYNCHRONOUS] [SYNCHRONOUS] | "ASYNCHRONOUS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventOrdering* | Set the delivery mode (ordered, unordered) One of: [UNORDERED] [ORDERED] | "ORDERED" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventTypes* | Set the type of events to listen for (EVICTED,EXPIRED,REMOVED,CREATED,UPDATED). You can specify multiple entries separated by comma. One of: [EVICTED] [EXPIRED] [REMOVED] [CREATED] [UPDATED] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configuration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurations* | A map of cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyType* | The cache key type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueType* | The cache value type, default java.lang.Object | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfiguration* | The default cache configuration to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheConfigurationUri* | URI pointing to the Ehcache XML configuration file's location | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManager* | The cache manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cacheManagerConfiguration* | The cache manager configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.cachesConfigurations* | A map of caches configurations to be used to create caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ehcache.configuration* | Sets the global component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-elasticsearch-rest-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-elasticsearch-rest-kafka-sink-connector.adoc
new file mode 100644
index 0000000..97914ef
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-elasticsearch-rest-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-elasticsearch-rest-kafka-connector-sink]]
+= camel-elasticsearch-rest-kafka-connector sink configuration
+
+When using camel-elasticsearch-rest-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elasticsearch-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elasticsearch-rest sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.clusterName* | Name of the cluster | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | The time in ms to wait before connection will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Disconnect after it finish calling the producer | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableSniffer* | Enable automatically discover nodes from a running Elasticsearch cluster | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableSSL* | Enable SSL | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | Starting index of the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostAddresses* | Comma separated list with ip:port formatted remote transport addresses to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.indexName* | The name of the index to act against | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetryTimeout* | The time in ms before retry | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | What operation to perform One of: [Index] [Update] [Bulk] [BulkIndex] [GetById] [MultiGet] [MultiSearch] [Delete] [DeleteIndex] [Search] [Exists] [Ping] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scrollKeepAliveMs* | Time in ms during which elasticsearch will keep search context alive | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.size* | Size of the response. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sniffAfterFailureDelay* | The delay of a sniff execution scheduled after a failure (in milliseconds) | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snifferInterval* | The interval between consecutive ordinary sniff executions in milliseconds. Will be honoured when sniffOnFailure is disabled or when there are no failures between consecutive sniff executions | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | The timeout in ms to wait before the socket will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useScroll* | Enable scroll usage | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForActiveShards* | Index creation waits for the write consistency number of shards to be available | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.client* | To use an existing configured Elasticsearch client, instead of creating a client per endpoint. This allow to customize the client with specific settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.connection Timeout* | The time in ms to wait before connection will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.enableSniffer* | Enable automatically discover nodes from a running Elasticsearch cluster | "false" | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.hostAddresses* | Comma separated list with ip:port formatted remote transport addresses to use. The ip and port options must be left blank for hostAddresses to be considered instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.maxRetryTimeout* | The time in ms before retry | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.sniffAfter FailureDelay* | The delay of a sniff execution scheduled after a failure (in milliseconds) | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.snifferInterval* | The interval between consecutive ordinary sniff executions in milliseconds. Will be honoured when sniffOnFailure is disabled or when there are no failures between consecutive sniff executions | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.socketTimeout* | The timeout in ms to wait before the socket will timeout. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.enableSSL* | Enable SSL | "false" | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.password* | Password for authenticate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elasticsearch-rest.user* | Basic authenticate user | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-elsql-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-elsql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e486179
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-elsql-kafka-sink-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-elsql-kafka-connector-sink]]
+= camel-elsql-kafka-connector sink configuration
+
+When using camel-elsql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elsql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elsql sink connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.elsqlName* | The name of the elsql to use (is NAMED in the elsql file) | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batch* | Enables or disables batch mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noop* | If set, will ignore the results of the SQL query and use the existing IN message as the OUT message for the continuation of processing | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageBodyForSql* | Whether to use the message body as the SQL and then headers for parameters. If this option is enabled then the SQL in the uri is not used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-elsql-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-elsql-kafka-source-connector.adoc
new file mode 100644
index 0000000..b595751
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-elsql-kafka-source-connector.adoc
@@ -0,0 +1,80 @@
+// kafka-connector options: START
+[[camel-elsql-kafka-connector-source]]
+= camel-elsql-kafka-connector source configuration
+
+When using camel-elsql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elsql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elsql source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.elsqlName* | The name of the elsql to use (is NAMED in the elsql file) | null | ConfigDef.Importance.HIGH
+| *camel.source.path.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.breakBatchOnConsumeFail* | Sets whether to break batch if onConsume failed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expectedUpdateCount* | Sets an expected update count to validate when using onConsume. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Sets the maximum number of messages to poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsume* | After processing each row then this query can be executed, if the Exchange was processed successfully, for example to mark the row as processed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeBatchComplete* | After processing the entire batch, this query can be executed to bulk update rows etc. The query cannot have parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeFailed* | After processing each row then this query can be executed, if the Exchange failed, for example to mark the row as failed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeEmptyResultSet* | Sets whether empty resultset should be allowed to be sent to the next hop. Defaults to false. So the empty resultset will be filtered out. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Enables or disables transaction. If enabled then if processing an exchange failed then the consumer breaks out processing any further exchanges to cause a rollback eager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIterator* | Sets how resultset should be delivered to route. Indicates delivery as either a list or individual object. defaults to true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processingStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlProcessingStrategy to execute queries when the consumer has processed the rows/batch. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.databaseVendor* | To use a vendor specific com.opengamma.elsql.ElSqlConfig One of: [Default] [Postgres] [HSql] [MySql] [Oracle] [SqlServer2008] [Veritca] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.resourceUri* | The resource file which contains the elsql SQL statements to use. You can specify multiple resources separated by comma. The resources are loaded on the classpath by default, you can prefix with file: to load from file system. Notice you can set this option on the component and then you do not have to configure this on the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elsql.elSqlConfig* | To use a specific configured ElSqlConfig. It may be better to use the databaseVendor option instead. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-elytron-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-elytron-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8724037
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-elytron-kafka-sink-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-elytron-kafka-connector-sink]]
+= camel-elytron-kafka-connector sink configuration
+
+When using camel-elytron-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elytron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elytron sink connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowedRoles* | Comma separated list of allowed roles. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Sets additional channel options. The options that can be used are defined in org.xnio.Options. To configure from endpoint uri, then prefix each option with option., such as option.close-abort=true&option.send-buffer=8192 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, UndertowProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddresses* | Setting to facilitate socket multiplexing | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeout* | Timeout in milliseconds when sending to a websocket channel. The default timeout is 30000 (30 seconds). | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | To send to all websocket subscribers. Can be used to configure on endpoint level, instead of having to use the UndertowConstants.SEND_TO_ALL header on the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.elytronProvider* | Elytron security provider, has to support mechanism from parameter mechanismName. | "instance of WildFlyElytronHttpBearerProvider" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.mechanismName* | Name of the mechanism, which will be used for selection of authentication mechanism. | "BEARER_TOKEN" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.securityDomainBuilder* | Definition of Builder, which will be used for creation of security domain. | null | ConfigDef.Importance.HIGH
+| *camel.component.elytron.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-elytron-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-elytron-kafka-source-connector.adoc
new file mode 100644
index 0000000..e3bd9b8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-elytron-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-elytron-kafka-connector-source]]
+= camel-elytron-kafka-connector source configuration
+
+When using camel-elytron-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-elytron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-elytron source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowedRoles* | Comma separated list of allowed roles. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLog* | Whether or not the consumer should write access log | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handlers* | Specifies a comma-delimited set of io.undertow.server.HttpHandler instances to lookup in your Registry. These handlers are added to the Undertow handler chain (for example, to add security). Important: You can not use different handlers with different Undertow endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireWebSocketChannelEvents* | if true, the consumer will post notifications to the route when a new WebSocket peer connects, disconnects, etc. See UndertowConstants.EVENT_TYPE and EventType. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.elytronProvider* | Elytron security provider, has to support mechanism from parameter mechanismName. | "instance of WildFlyElytronHttpBearerProvider" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.mechanismName* | Name of the mechanism, which will be used for selection of authentication mechanism. | "BEARER_TOKEN" | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.securityDomainBuilder* | Definition of Builder, which will be used for creation of security domain. | null | ConfigDef.Importance.HIGH
+| *camel.component.elytron.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.elytron.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-etcd-keys-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-etcd-keys-kafka-sink-connector.adoc
new file mode 100644
index 0000000..504ce17
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-etcd-keys-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-etcd-keys-kafka-connector-sink]]
+= camel-etcd-keys-kafka-connector sink configuration
+
+When using camel-etcd-keys-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-keys-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-keys sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | To set the lifespan of a key in milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-keys.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-etcd-stats-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-etcd-stats-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c7bee94
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-etcd-stats-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-etcd-stats-kafka-connector-sink]]
+= camel-etcd-stats-kafka-connector sink configuration
+
+When using camel-etcd-stats-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-stats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-stats sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | To set the lifespan of a key in milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-etcd-stats-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-etcd-stats-kafka-source-connector.adoc
new file mode 100644
index 0000000..de914fd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-etcd-stats-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-etcd-stats-kafka-connector-source]]
+= camel-etcd-stats-kafka-connector source configuration
+
+When using camel-etcd-stats-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-stats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-stats source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyExchangeOnTimeout* | To send an empty message in case of timeout watching for a key. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromIndex* | The index to watch from | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-stats.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-etcd-watch-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-etcd-watch-kafka-source-connector.adoc
new file mode 100644
index 0000000..20b786b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-etcd-watch-kafka-source-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-etcd-watch-kafka-connector-source]]
+= camel-etcd-watch-kafka-connector source configuration
+
+When using camel-etcd-watch-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-etcd-watch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-etcd-watch source connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The path the endpoint refers to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | To apply an action recursively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servicePath* | The path to look for for service discovery | "/services/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uris* | To set the URIs the client connects. | "http://localhost:2379,http://localhost:4001" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyExchangeOnTimeout* | To send an empty message in case of timeout watching for a key. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | To set the maximum time an action could take to complete. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromIndex* | The index to watch from | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.configuration* | Sets the common configuration shared among endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.password* | The password to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.uris* | To set the URIs the client connects. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.userName* | The user name to use for basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.etcd-watch.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-eventadmin-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-eventadmin-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c3893cc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-eventadmin-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-eventadmin-kafka-connector-sink]]
+= camel-eventadmin-kafka-connector sink configuration
+
+When using camel-eventadmin-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-eventadmin-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-eventadmin sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | Name of topic to listen or send to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.send* | Whether to use 'send' or 'synchronous' deliver. Default false (async delivery) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.bundleContext* | The OSGi BundleContext is automatic injected by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-eventadmin-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-eventadmin-kafka-source-connector.adoc
new file mode 100644
index 0000000..2db389a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-eventadmin-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-eventadmin-kafka-connector-source]]
+= camel-eventadmin-kafka-connector source configuration
+
+When using camel-eventadmin-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-eventadmin-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-eventadmin source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | Name of topic to listen or send to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.send* | Whether to use 'send' or 'synchronous' deliver. Default false (async delivery) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.bundleContext* | The OSGi BundleContext is automatic injected by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.eventadmin.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-exec-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-exec-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86af811
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-exec-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-exec-kafka-connector-sink]]
+= camel-exec-kafka-connector sink configuration
+
+When using camel-exec-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-exec-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-exec sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.executable* | Sets the executable to be executed. The executable must not be empty or null. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.args* | The arguments may be one or many whitespace-separated tokens. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | A reference to a org.apache.commons.exec.ExecBinding in the Registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commandExecutor* | A reference to a org.apache.commons.exec.ExecCommandExecutor in the Registry that customizes the command execution. The default command executor utilizes the commons-exec library, which adds a shutdown hook for every executed command. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commandLogLevel* | Logging level to be used for commands during execution. The default value is DEBUG. Possible values are TRACE, DEBUG, INFO, WARN, ERROR or OFF. (Values of ExecCommandLogLevelType enum) One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outFile* | The name of a file, created by the executable, that should be considered as its output. If no outFile is set, the standard output (stdout) of the executable will be used instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout, in milliseconds, after which the executable should be terminated. If execution has not completed within the timeout, the component will send a termination request. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useStderrOnEmptyStdout* | A boolean indicating that when stdout is empty, this component will populate the Camel Message Body with stderr. This behavior is disabled (false) by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workingDir* | The directory in which the command should be executed. If null, the working directory of the current process will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.exec.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.exec.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-facebook-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-facebook-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5bcb78c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-facebook-kafka-sink-connector.adoc
@@ -0,0 +1,131 @@
+// kafka-connector options: START
+[[camel-facebook-kafka-connector-sink]]
+= camel-facebook-kafka-connector sink configuration
+
+When using camel-facebook-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-facebook-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-facebook sink connector supports 105 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.methodName* | What operation to perform | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.achievementURL* | The unique URL of the achievement | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.albumId* | The album ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.albumUpdate* | The facebook Album to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.appId* | The ID of the Facebook Application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.center* | Location latitude and longitude | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.checkinId* | The checkin ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.checkinUpdate* | The checkin to be created. Deprecated, instead create a Post with an attached location | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.clientURL* | Facebook4J API client URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientVersion* | Facebook4J client API version | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commentId* | The comment ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commentUpdate* | The facebook Comment to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugEnabled* | Enables deubg output. Effective only with the embedded logger | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.description* | The description text | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.distance* | Distance in meters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainId* | The domain ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainName* | The domain name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domainNames* | The domain names | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventId* | The event ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventUpdate* | The event to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendId* | The friend ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendlistId* | The friend list ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendlistName* | The friend list Name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.friendUserId* | The friend user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupId* | The group ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gzipEnabled* | Use Facebook GZIP encoding | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpConnectionTimeout* | Http connection timeout in milliseconds | "20000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpDefaultMaxPerRoute* | HTTP maximum connections per route | "2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMaxTotalConnections* | HTTP maximum total connections | "20" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpReadTimeout* | Http read timeout in milliseconds | "120000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpRetryCount* | Number of HTTP retries | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpRetryIntervalSeconds* | HTTP retry interval in seconds | "5" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpStreamingReadTimeout* | HTTP streaming read timeout in milliseconds | "40000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ids* | The ids of users | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeRead* | Enables notifications that the user has already read in addition to unread ones | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.isHidden* | Whether hidden | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonStoreEnabled* | If set to true, raw JSON forms will be stored in DataObjectFactory | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.link* | Link URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.linkId* | Link ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.locale* | Desired FQL locale | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mbeanEnabled* | If set to true, Facebook4J mbean will be registerd | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.message* | The message text | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageId* | The message ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metric* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.milestoneId* | The milestone id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | Test user name, must be of the form 'first last' | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noteId* | The note ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notificationId* | The notification ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.objectId* | The insight object ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerId* | The offer id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.optionDescription* | The question's answer option description | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageId* | The page id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.permissionName* | The permission name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.permissions* | Test user permissions in the format perm1,perm2,... | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.photoId* | The photo ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pictureId* | The picture id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pictureId2* | The picture2 id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pictureSize* | The picture size One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.placeId* | The place ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.postId* | The post ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.postUpdate* | The post to create or update | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prettyDebugEnabled* | Prettify JSON debug output if set to true | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queries* | FQL queries | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | FQL query or search terms for search endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.questionId* | The question id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reading* | Optional reading parameters. See Reading Options(#reading) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readingOptions* | To configure Reading using key/value pairs from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.restBaseURL* | API base URL | "https://graph.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scoreValue* | The numeric score with value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.size* | The picture size, one of large, normal, small or square One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.source* | The media content from either a java.io.File or java.io.Inputstream | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The note of the subject | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tabId* | The tab id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagUpdate* | Photo tag information | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testUser1* | Test user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testUser2* | Test user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testUserId* | The ID of the test user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.title* | The title text | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUserId* | The ID of the user to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUserIds* | The IDs of the users to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId* | The Facebook user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId1* | The ID of a user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId2* | The ID of a user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userIds* | The IDs of users to invite to event | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userLocale* | The test user locale | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSSL* | Use SSL | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.videoBaseURL* | Video API base URL | "https://graph-video.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.videoId* | The video ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | HTTP proxy server host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | HTTP proxy server password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | HTTP proxy server port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | HTTP proxy server user name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAccessToken* | The user access token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAccessTokenURL* | OAuth access token URL | "https://graph.facebook.com/oauth/access_token" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAppId* | The application Id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAppSecret* | The application Secret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthAuthorizationURL* | OAuth authorization URL | "https://www.facebook.com/dialog/oauth" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oAuthPermissions* | Default OAuth permissions. Comma separated permission names. See \https://developers.facebook.com/docs/reference/login/#permissions for the detail | null | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-facebook-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-facebook-kafka-source-connector.adoc
new file mode 100644
index 0000000..68514da
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-facebook-kafka-source-connector.adoc
@@ -0,0 +1,133 @@
+// kafka-connector options: START
+[[camel-facebook-kafka-connector-source]]
+= camel-facebook-kafka-connector source configuration
+
+When using camel-facebook-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-facebook-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-facebook source connector supports 107 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.methodName* | What operation to perform | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.achievementURL* | The unique URL of the achievement | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.albumId* | The album ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.albumUpdate* | The facebook Album to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.appId* | The ID of the Facebook Application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.center* | Location latitude and longitude | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkinId* | The checkin ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkinUpdate* | The checkin to be created. Deprecated, instead create a Post with an attached location | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.clientURL* | Facebook4J API client URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientVersion* | Facebook4J client API version | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.commentId* | The comment ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.commentUpdate* | The facebook Comment to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugEnabled* | Enables deubg output. Effective only with the embedded logger | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.description* | The description text | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distance* | Distance in meters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainId* | The domain ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainName* | The domain name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.domainNames* | The domain names | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventId* | The event ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventUpdate* | The event to be created or updated | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendId* | The friend ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendlistId* | The friend list ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendlistName* | The friend list Name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.friendUserId* | The friend user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupId* | The group ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gzipEnabled* | Use Facebook GZIP encoding | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpConnectionTimeout* | Http connection timeout in milliseconds | "20000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpDefaultMaxPerRoute* | HTTP maximum connections per route | "2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMaxTotalConnections* | HTTP maximum total connections | "20" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpReadTimeout* | Http read timeout in milliseconds | "120000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpRetryCount* | Number of HTTP retries | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpRetryIntervalSeconds* | HTTP retry interval in seconds | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpStreamingReadTimeout* | HTTP streaming read timeout in milliseconds | "40000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ids* | The ids of users | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeRead* | Enables notifications that the user has already read in addition to unread ones | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.isHidden* | Whether hidden | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jsonStoreEnabled* | If set to true, raw JSON forms will be stored in DataObjectFactory | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.link* | Link URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.linkId* | Link ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locale* | Desired FQL locale | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mbeanEnabled* | If set to true, Facebook4J mbean will be registerd | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.message* | The message text | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageId* | The message ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.metric* | The metric name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.milestoneId* | The milestone id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.name* | Test user name, must be of the form 'first last' | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noteId* | The note ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notificationId* | The notification ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectId* | The insight object ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offerId* | The offer id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionDescription* | The question's answer option description | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageId* | The page id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.permissionName* | The permission name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.permissions* | Test user permissions in the format perm1,perm2,... | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.photoId* | The photo ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pictureId* | The picture id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pictureId2* | The picture2 id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pictureSize* | The picture size One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.placeId* | The place ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postId* | The post ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postUpdate* | The post to create or update | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prettyDebugEnabled* | Prettify JSON debug output if set to true | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queries* | FQL queries | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | FQL query or search terms for search endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.questionId* | The question id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reading* | Optional reading parameters. See Reading Options(#reading) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readingOptions* | To configure Reading using key/value pairs from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.restBaseURL* | API base URL | "https://graph.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scoreValue* | The numeric score with value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.size* | The picture size, one of large, normal, small or square One of: [square] [small] [normal] [large] [thumbnail] [album] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.source* | The media content from either a java.io.File or java.io.Inputstream | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subject* | The note of the subject | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tabId* | The tab id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagUpdate* | Photo tag information | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testUser1* | Test user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testUser2* | Test user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testUserId* | The ID of the test user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.title* | The title text | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUserId* | The ID of the user to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUserIds* | The IDs of the users to tag | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | The Facebook user ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId1* | The ID of a user 1 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId2* | The ID of a user 2 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | The IDs of users to invite to event | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userLocale* | The test user locale | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useSSL* | Use SSL | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.videoBaseURL* | Video API base URL | "https://graph-video.facebook.com/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.videoId* | The video ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | HTTP proxy server host name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | HTTP proxy server password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | HTTP proxy server port | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | HTTP proxy server user name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAccessToken* | The user access token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAccessTokenURL* | OAuth access token URL | "https://graph.facebook.com/oauth/access_token" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAppId* | The application Id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAppSecret* | The application Secret | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthAuthorizationURL* | OAuth authorization URL | "https://www.facebook.com/dialog/oauth" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oAuthPermissions* | Default OAuth permissions. Comma separated permission names. See \https://developers.facebook.com/docs/reference/login/#permissions for the detail | null | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.facebook.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-fhir-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-fhir-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f89595e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-fhir-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-fhir-kafka-connector-sink]]
+= camel-fhir-kafka-connector sink configuration
+
+When using camel-fhir-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-fhir-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-fhir sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [capabilities] [create] [delete] [history] [load-page] [meta] [patch] [read] [search] [transaction] [update] [validate] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.encoding* | Encoding to use for all request One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fhirVersion* | The FHIR Version to use One of: [DSTU2] [DSTU2_HL7ORG] [DSTU2_1] [DSTU3] [R4] [R5] | "R4" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.log* | Will log every requests and responses | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prettyPrint* | Pretty print all request | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverUrl* | The FHIR server base URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.client* | To use the custom client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientFactory* | To use the custom client factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compress* | Compresses outgoing (POST/PUT) contents to the GZIP format | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | How long to try and establish the initial TCP connection (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deferModelScanning* | When this option is set, model classes will not be scanned for children until the child list for the given type is actually accessed. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fhirContext* | FhirContext is an expensive object to create. To avoid creating multiple instances, it can be set directly. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceConformanceCheck* | Force conformance check | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionCookie* | HTTP session cookie to add to every request | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | How long to block for individual read/write operations (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.summary* | Request that the server modify the response using the _summary param One of: [COUNT] [TEXT] [DATA] [TRUE] [FALSE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validationMode* | When should Camel validate the FHIR Server's conformance statement One of: [NEVER] [ONCE] | "ONCE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPassword* | The proxy password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyUser* | The proxy username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | OAuth access token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-fhir-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-fhir-kafka-source-connector.adoc
new file mode 100644
index 0000000..f5b1010
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-fhir-kafka-source-connector.adoc
@@ -0,0 +1,76 @@
+// kafka-connector options: START
+[[camel-fhir-kafka-connector-source]]
+= camel-fhir-kafka-connector source configuration
+
+When using camel-fhir-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-fhir-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-fhir source connector supports 50 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [capabilities] [create] [delete] [history] [load-page] [meta] [patch] [read] [search] [transaction] [update] [validate] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.encoding* | Encoding to use for all request One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fhirVersion* | The FHIR Version to use One of: [DSTU2] [DSTU2_HL7ORG] [DSTU2_1] [DSTU3] [R4] [R5] | "R4" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.log* | Will log every requests and responses | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prettyPrint* | Pretty print all request | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverUrl* | The FHIR server base URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.client* | To use the custom client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientFactory* | To use the custom client factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compress* | Compresses outgoing (POST/PUT) contents to the GZIP format | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | How long to try and establish the initial TCP connection (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deferModelScanning* | When this option is set, model classes will not be scanned for children until the child list for the given type is actually accessed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fhirContext* | FhirContext is an expensive object to create. To avoid creating multiple instances, it can be set directly. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forceConformanceCheck* | Force conformance check | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionCookie* | HTTP session cookie to add to every request | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketTimeout* | How long to block for individual read/write operations (in ms) | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.summary* | Request that the server modify the response using the _summary param One of: [COUNT] [TEXT] [DATA] [TRUE] [FALSE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.validationMode* | When should Camel validate the FHIR Server's conformance statement One of: [NEVER] [ONCE] | "ONCE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | The proxy host | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPassword* | The proxy password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | The proxy port | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyUser* | The proxy username | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth access token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for basic authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fhir.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-file-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-file-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a9d710f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-file-kafka-sink-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-file-kafka-connector-sink]]
+= camel-file-kafka-connector sink configuration
+
+When using camel-file-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-file-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-file sink connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.appendChars* | Used to append characters (text) after writing files. This can for example be used to add new lines or other separators when writing and appending to existing files. To specify new-line (slash-n or slash-r) or tab (slash-t) characters then escape with an extra slash, eg slash-slash-n. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Specify the file permissions which is sent by the producer, the chmod value must be between 000 and 777; If there is a leading digit like in 0755 we will ignore it. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmodDirectory* | Specify the directory permissions used when the producer creates missing directories, the chmod value must be between 000 and 777; If there is a leading digit like in 0755 we will ignore it. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceWrites* | Whether to force syncing writes to the file system. You can turn this off if you do not want this level of guarantee, for example if writing to logs / audit logs etc; this would yield better performance. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyAndDeleteOnRenameFail* | Whether to fallback and do a copy and delete file, in case the file could not be renamed directly. This option is not available for the FTP component. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.renameUsingCopy* | Perform rename operations using a copy and delete strategy. This is primarily used in environments where the regular rename operation is unreliable (e.g. across different file systems or networks). This option takes precedence over the copyAndDeleteOnRenameFail parameter that will automatically fall back to the copy and delete strategy, but only after additional delays. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-file-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-file-kafka-source-connector.adoc
new file mode 100644
index 0000000..4dff40c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-file-kafka-source-connector.adoc
@@ -0,0 +1,106 @@
+// kafka-connector options: START
+[[camel-file-kafka-connector-source]]
+= camel-file-kafka-connector source configuration
+
+When using camel-file-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-file-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-file source connector supports 80 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.directoryMustExist* | Similar to the startingDirectoryMustExist option but this applies during polling (after starting the consumer). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedAttributes* | To define which file attributes of interest. Like posix:permissions,posix:owner,basic:lastAccessTime, it supports basic wildcard like posix:, basic:lastAccessTime | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.probeContentType* | Whether to enable probing of the content type. If enable then the consumer uses Files#probeContentType(java.nio.file.Path) to determine the content-type of the file, and store that as a header with key Exchange#FILE_CONTENT_TYPE on the Message. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startingDirectoryMustExist* | Whether the starting directory must exist. Mind that the autoCreate option is default enabled, which means the starting directory is normally auto created if it doesn't exist. You can disable autoCreate and enable this to ensure the starting directory must exist. Will thrown an exception if the directory doesn't exist. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startingDirectoryMustHave Access* | Whether the starting directory has access permissions. Mind that the startingDirectoryMustExist parameter must be set to true in order to verify that the directory exists. Will thrown an exception if the directory doesn't have read and write permissions. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyAndDeleteOnRenameFail* | Whether to fallback and do a copy and delete file, in case the file could not be renamed directly. This option is not available for the FTP component. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.renameUsingCopy* | Perform rename operations using a copy and delete strategy. This is primarily used in environments where the regular rename operation is unreliable (e.g. across different file systems or networks). This option takes precedence over the copyAndDeleteOnRenameFail parameter that will automatically fall back to the copy and delete strategy, but only after additional delays. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Async* | Whether the delayed release task should be synchronous or asynchronous. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease AsyncPoolSize* | The number of threads in the scheduled thread pool when using asynchronous release tasks. Using a default of 1 core threads should be sufficient in almost all use-cases, only set this to a higher value if either updating the idempotent repository is slow, or there are a lot of files to process. This option is not in-use if you use a shared thread pool by configuring the readLockIdempotentReleaseExecutorService option. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Delay* | Whether to delay the release task for a period of millis. This can be used to delay the release tasks to expand the window when a file is regarded as read-locked, in an active/active cluster scenario with a shared idempotent repository, to ensure other nodes cannot potentially scan and acquire the same file, due to race-conditions. By expanding the time-window of the release tasks helps prevents these situations. Note delaying is only needed if you have configured readLockRemoveOnCommit to true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease ExecutorService* | To use a custom and shared thread pool for asynchronous release tasks. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.file.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-file-watch-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-file-watch-kafka-source-connector.adoc
new file mode 100644
index 0000000..8798eb3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-file-watch-kafka-source-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-file-watch-kafka-connector-source]]
+= camel-file-watch-kafka-connector source configuration
+
+When using camel-file-watch-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-file-watch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-file-watch source connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | Path of directory to consume events from. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.antInclude* | ANT style pattern to match files. The file is matched against path relative to endpoint path. Pattern must be also relative (not starting with slash) | "**" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Auto create directory if does not exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | The number of concurrent consumers. Increase this value, if your route is slow to prevent buffering in queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.events* | Comma separated list of events to watch. One of: [CREATE] [MODIFY] [DELETE] | "CREATE,MODIFY,DELETE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileHasher* | Reference to io.methvin.watcher.hashing.FileHasher. This prevents emitting duplicate events on some platforms. For working with large files and if you dont need detect multiple modifications per second per file, use #lastModifiedTimeFileHasher. You can also provide custom implementation in registry. | "#murmur3FFileHasher" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollThreads* | The number of threads polling WatchService. Increase this value, if you see OVERFLOW messages in log. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueSize* | Maximum size of queue between WatchService and consumer. Unbounded by default. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | Watch recursive in current and child directories (including newly created directories). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFileHashing* | Enables or disables file hashing to detect duplicate events. If you disable this, you can get some events multiple times on some platforms and JDKs. Check java.nio.file.WatchService limitations for your target platform. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.concurrentConsumers* | The number of concurrent consumers. Increase this value, if your route is slow to prevent buffering in queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.fileHasher* | Reference to io.methvin.watcher.hashing.FileHasher. This prevents emitting duplicate events on some platforms. For working with large files and if you dont need detect multiple modifications per second per file, use #lastModifiedTimeFileHasher. You can also provide custom implementation in registry. | "#murmur3FFileHasher" | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.pollThreads* | The number of threads polling WatchService. Increase this value, if you see OVERFLOW messages in log. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.queueSize* | Maximum size of queue between WatchService and consumer. Unbounded by default. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.useFileHashing* | Enables or disables file hashing to detect duplicate events. If you disable this, you can get some events multiple times on some platforms and JDKs. Check java.nio.file.WatchService limitations for your target platform. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.file-watch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-flatpack-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-flatpack-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0248957
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-flatpack-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-flatpack-kafka-connector-sink]]
+= camel-flatpack-kafka-connector sink configuration
+
+When using camel-flatpack-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-flatpack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-flatpack sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | Whether to use fixed or delimiter One of: [fixed] [delim] | "delim" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.resourceUri* | URL for loading the flatpack mapping file from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowShortLines* | Allows for lines to be shorter than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiter* | The default character delimiter for delimited files. | "," | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreExtraColumns* | Allows for lines to be longer than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreFirstRecord* | Whether the first line is ignored for delimited files (for the column headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splitRows* | Sets the Component to send each row as a separate exchange once parsed | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textQualifier* | The text qualifier for delimited files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-flatpack-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-flatpack-kafka-source-connector.adoc
new file mode 100644
index 0000000..038de4d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-flatpack-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-flatpack-kafka-connector-source]]
+= camel-flatpack-kafka-connector source configuration
+
+When using camel-flatpack-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-flatpack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-flatpack source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Whether to use fixed or delimiter One of: [fixed] [delim] | "delim" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.resourceUri* | URL for loading the flatpack mapping file from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowShortLines* | Allows for lines to be shorter than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delimiter* | The default character delimiter for delimited files. | "," | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreExtraColumns* | Allows for lines to be longer than expected and ignores the extra characters | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFirstRecord* | Whether the first line is ignored for delimited files (for the column headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitRows* | Sets the Component to send each row as a separate exchange once parsed | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textQualifier* | The text qualifier for delimited files. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flatpack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-flink-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-flink-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8e82694
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-flink-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-flink-kafka-connector-sink]]
+= camel-flink-kafka-connector sink configuration
+
+When using camel-flink-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-flink-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-flink sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointType* | Type of the endpoint (dataset, datastream). One of: [dataset] [datastream] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collect* | Indicates if results should be collected or counted. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSet* | DataSet to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSetCallback* | Function performing action against a DataSet. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataStream* | DataStream to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataStreamCallback* | Function performing action against a DataStream. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataSet* | DataSet to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataSetCallback* | Function performing action against a DataSet. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataStream* | DataStream to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.dataStreamCallback* | Function performing action against a DataStream. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.flink.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-fop-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-fop-kafka-sink-connector.adoc
new file mode 100644
index 0000000..de440df
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-fop-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-fop-kafka-connector-sink]]
+= camel-fop-kafka-connector sink configuration
+
+When using camel-fop-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-fop-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-fop sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.outputType* | The primary output format is PDF but other output formats are also supported. One of: [pdf] [ps] [pcl] [png] [jpeg] [svg] [xml] [mif] [rtf] [txt] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.fopFactory* | Allows to use a custom configured or implementation of org.apache.fop.apps.FopFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userConfigURL* | The location of a configuration file which can be loaded from classpath or file system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fop.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.fop.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-freemarker-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-freemarker-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a0bcf59
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-freemarker-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-freemarker-kafka-connector-sink]]
+= camel-freemarker-kafka-connector sink configuration
+
+When using camel-freemarker-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-freemarker-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-freemarker sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.configuration* | Sets the Freemarker configuration to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Sets the encoding to be used for loading the template file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.templateUpdateDelay* | Number of seconds the loaded template resource will remain in the cache. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.freemarker.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.freemarker.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.freemarker.configuration* | To use an existing freemarker.template.Configuration instance as the configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ftp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ftp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1b9aa49
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ftp-kafka-sink-connector.adoc
@@ -0,0 +1,76 @@
+// kafka-connector options: START
+[[camel-ftp-kafka-connector-sink]]
+= camel-ftp-kafka-connector sink configuration
+
+When using camel-ftp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftp sink connector supports 50 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingIntervalSeconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=640. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendNoop* | Whether to send a noop command as a pre-write check before uploading files to the FTP server. This is enabled by default as a validation of the connection is still valid, which allows to silently re-connect to be able to upload the file. However if this causes problems, you can turn this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnConnectFailed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ftp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ftp-kafka-source-connector.adoc
new file mode 100644
index 0000000..a0fae33
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ftp-kafka-source-connector.adoc
@@ -0,0 +1,127 @@
+// kafka-connector options: START
+[[camel-ftp-kafka-connector-source]]
+= camel-ftp-kafka-connector source configuration
+
+When using camel-ftp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftp source connector supports 101 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingInterval Seconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resumeDownload* | Configures whether resume download is enabled. This must be supported by the FTP server (almost all FTP servers support it). In addition the options localWorkDirectory must be configured so downloaded files are stored in a local directory, and the option binary must be enabled, which is required to support resuming of downloads. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. If enabling this option then you must set stepwise=false as both cannot be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.download* | Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleDirectoryParser AbsoluteResult* | Allows you to set how the consumer will handle subfolders and files in the path if the directory parser results in with absolute paths The reason for this is that some FTP servers may return file names with absolute paths, and if so then the FTP component needs to handle this by converting the returned path into a relative path. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFileNotFoundOr PermissionError* | Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useList* | Whether to allow using LIST command when downloading a file. Default is true. In some use cases you may want to download a specific file and are not allowed to use the LIST command, and therefore you can set this option to false. Notice when using this option, then the specific file to download does not include meta-data information such as file size, timestamp, permissions etc, because those information is only possible to retrieve when LIST command is in use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnConnect Failed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ftps-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ftps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..177f5af
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ftps-kafka-sink-connector.adoc
@@ -0,0 +1,85 @@
+// kafka-connector options: START
+[[camel-ftps-kafka-connector-sink]]
+= camel-ftps-kafka-connector sink configuration
+
+When using camel-ftps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftps sink connector supports 59 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingIntervalSeconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=640. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendNoop* | Whether to send a noop command as a pre-write check before uploading files to the FTP server. This is enabled by default as a validation of the connection is still valid, which allows to silently re-connect to be able to upload the file. However if this causes problems, you can turn this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnConnectFailed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableSecureDataChannel Defaults* | Use this option to disable default options when using secure data channel. This allows you to be in full control what the execPbsz and execProt setting should be used. Default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.execPbsz* | When using secure data channel you can set the exec protection buffer size | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.execProt* | The exec protection level PROT command. C - Clear S - Safe(SSL protocol only) E - Confidential(SSL protocol only) P - Private | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientKeyStoreParameters* | Set the key store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ftpClientTrustStoreParameters* | Set the trust store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implicit* | Set the security mode (Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProtocol* | Set the underlying security protocol. | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Gets the JSSE configuration that overrides any settings in FtpsEndpoint#\ftpClientKeyStoreParameters, \ftpClientTrustStoreParameters, and FtpsConfiguration#getSecurityProtocol(). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ftps-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ftps-kafka-source-connector.adoc
new file mode 100644
index 0000000..4930911
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ftps-kafka-source-connector.adoc
@@ -0,0 +1,136 @@
+// kafka-connector options: START
+[[camel-ftps-kafka-connector-source]]
+= camel-ftps-kafka-connector source configuration
+
+When using camel-ftps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ftps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ftps source connector supports 110 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingInterval Seconds* | Configures the interval in seconds to use when logging the progress of upload and download operations that are in-flight. This is used for logging progress when operations takes longer time. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingLevel* | Configure the logging level to use when logging the progress of upload and download operations. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferLoggingVerbose* | Configures whether the perform verbose (fine grained) logging of the progress of upload and download operations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resumeDownload* | Configures whether resume download is enabled. This must be supported by the FTP server (almost all FTP servers support it). In addition the options localWorkDirectory must be configured so downloaded files are stored in a local directory, and the option binary must be enabled, which is required to support resuming of downloads. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. If enabling this option then you must set stepwise=false as both cannot be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.download* | Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleDirectoryParser AbsoluteResult* | Allows you to set how the consumer will handle subfolders and files in the path if the directory parser results in with absolute paths The reason for this is that some FTP servers may return file names with absolute paths, and if so then the FTP component needs to handle this by converting the returned path into a relative path. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFileNotFoundOr PermissionError* | Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useList* | Whether to allow using LIST command when downloading a file. Default is true. In some use cases you may want to download a specific file and are not allowed to use the LIST command, and therefore you can set this option to false. Notice when using this option, then the specific file to download does not include meta-data information such as file size, timestamp, permissions etc, because those information is only possible to retrieve when LIST command is in use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.activePortRange* | Set the client side port range in active mode. The syntax is: minPort-maxPort Both port numbers are inclusive, eg 10000-19999 to include all 1xxxx ports. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files). | 131072 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClient* | To use a custom instance of FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfig* | To use a custom instance of FTPClientConfig to configure the FTP client the endpoint should use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientConfigParameters* | Used by FtpComponent to provide additional parameters for the FTPClientConfig | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientParameters* | Used by FtpComponent to provide additional parameters for the FTPClient | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.siteCommand* | Sets optional site command(s) to be executed after successful login. Multiple site commands can be separated using a new line character. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnConnect Failed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.account* | Account to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableSecureDataChannel Defaults* | Use this option to disable default options when using secure data channel. This allows you to be in full control what the execPbsz and execProt setting should be used. Default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.execPbsz* | When using secure data channel you can set the exec protection buffer size | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.execProt* | The exec protection level PROT command. C - Clear S - Safe(SSL protocol only) E - Confidential(SSL protocol only) P - Private | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientKeyStoreParameters* | Set the key store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ftpClientTrustStore Parameters* | Set the trust store parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implicit* | Set the security mode (Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProtocol* | Set the underlying security protocol. | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Gets the JSSE configuration that overrides any settings in FtpsEndpoint#\ftpClientKeyStoreParameters, \ftpClientTrustStoreParameters, and FtpsConfiguration#getSecurityProtocol(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ftps.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ganglia-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ganglia-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6886e63
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ganglia-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-ganglia-kafka-connector-sink]]
+= camel-ganglia-kafka-connector sink configuration
+
+When using camel-ganglia-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ganglia-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ganglia sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Host name for Ganglia server | "239.2.11.71" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port for Ganglia server | 8649 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dmax* | Minumum time in seconds before Ganglia will purge the metric value if it expires. Set to 0 and the value will remain in Ganglia indefinitely until a gmond agent restart. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupName* | The group that the metric belongs to. | "java" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricName* | The name to use for the metric. | "metric" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mode* | Send the UDP metric packets using MULTICAST or UNICAST One of: [MULTICAST] [UNICAST] | "MULTICAST" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefix* | Prefix the metric name with this string and an underscore. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.slope* | The slope One of: [ZERO] [POSITIVE] [NEGATIVE] [BOTH] | "BOTH" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.spoofHostname* | Spoofing information IP:hostname | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tmax* | Maximum time in seconds that the value can be considered current. After this, Ganglia considers the value to have expired. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | If using multicast, set the TTL of the packets | 5 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.type* | The type of value One of: [STRING] [INT8] [UINT8] [INT16] [UINT16] [INT32] [UINT32] [FLOAT] [DOUBLE] | "STRING" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.units* | Any unit of measurement that qualifies the metric, e.g. widgets, litres, bytes. Do not include a prefix such as k (kilo) or m (milli), other tools may scale the units later. The value should be unscaled. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wireFormat31x* | Use the wire format of Ganglia 3.1.0 and later versions. Set this to false to use Ganglia 3.0.x or earlier. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ganglia.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ganglia.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ganglia.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-geocoder-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-geocoder-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b5e444a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-geocoder-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-geocoder-kafka-connector-sink]]
+= camel-geocoder-kafka-connector sink configuration
+
+When using camel-geocoder-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-geocoder-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-geocoder sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.address* | The geo address which should be prefixed with address: | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.latlng* | The geo latitude and longitude which should be prefixed with latlng: | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headersOnly* | Whether to only enrich the Exchange with headers, and leave the body as-is. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.language* | The language to use. | "en" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Domain for proxy NTML authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Optional host for proxy NTML authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Authentication method for proxy, either as Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiKey* | To use google apiKey | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | To use google premium with this client id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKey* | To use google premium with this client key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.geocoder.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.geocoder.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-git-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-git-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f935803
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-git-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-git-kafka-connector-sink]]
+= camel-git-kafka-connector sink configuration
+
+When using camel-git-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-git-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-git sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.localPath* | Local repository path | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.branchName* | The branch name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Remote repository password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remoteName* | The remote repository name to use in particular operation like pull | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remotePath* | The remote repository path | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagName* | The tag name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Remote repository username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowEmpty* | The flag to manage empty git commits | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do on the repository One of: [clone] [init] [add] [remove] [commit] [commitAll] [createBranch] [deleteBranch] [createTag] [deleteTag] [status] [log] [push] [pull] [showBranches] [cherryPick] [remoteAdd] [remoteList] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-git-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-git-kafka-source-connector.adoc
new file mode 100644
index 0000000..c689d38
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-git-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-git-kafka-connector-source]]
+= camel-git-kafka-connector source configuration
+
+When using camel-git-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-git-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-git source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.localPath* | Local repository path | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.branchName* | The branch name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Remote repository password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remoteName* | The remote repository name to use in particular operation like pull | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remotePath* | The remote repository path | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagName* | The tag name to work on | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Remote repository username | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | The consumer type One of: [commit] [tag] [branch] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.git.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-github-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-github-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2d12b1a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-github-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-github-kafka-connector-sink]]
+= camel-github-kafka-connector sink configuration
+
+When using camel-github-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-github-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-github sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | What git operation to execute One of: [CLOSEPULLREQUEST] [PULLREQUESTCOMMENT] [COMMIT] [PULLREQUEST] [TAG] [PULLREQUESTSTATE] [PULLREQUESTFILES] [GETCOMMITFILE] [CREATEISSUE] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.oauthToken* | GitHub OAuth token, required unless username & password are provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | GitHub password, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repoName* | GitHub repository name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.repoOwner* | GitHub repository owner (organization) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | GitHub username, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | To use the given encoding when getting a git commit file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.state* | To set git commit status state One of: [error] [failure] [pending] [success] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetUrl* | To set git commit status target url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-github-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-github-kafka-source-connector.adoc
new file mode 100644
index 0000000..4c3a6c7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-github-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-github-kafka-connector-source]]
+= camel-github-kafka-connector source configuration
+
+When using camel-github-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-github-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-github source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | What git operation to execute One of: [CLOSEPULLREQUEST] [PULLREQUESTCOMMENT] [COMMIT] [PULLREQUEST] [TAG] [PULLREQUESTSTATE] [PULLREQUESTFILES] [GETCOMMITFILE] [CREATEISSUE] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.branchName* | Name of branch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | GitHub OAuth token, required unless username & password are provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | GitHub password, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repoName* | GitHub repository name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.repoOwner* | GitHub repository owner (organization) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.username* | GitHub username, required unless oauthToken is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.github.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-bigquery-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-bigquery-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fa60d0d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-bigquery-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-google-bigquery-kafka-connector-sink]]
+= camel-google-bigquery-kafka-connector sink configuration
+
+When using camel-google-bigquery-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-bigquery-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-bigquery sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.datasetId* | BigQuery Dataset Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.tableId* | BigQuery table id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useAsInsertId* | Field name to use as insert id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.connectionFactory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.datasetId* | BigQuery Dataset Id | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-bigquery-sql-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-bigquery-sql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a6f3f62
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-bigquery-sql-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-google-bigquery-sql-kafka-connector-sink]]
+= camel-google-bigquery-sql-kafka-connector sink configuration
+
+When using camel-google-bigquery-sql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-bigquery-sql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-bigquery-sql sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.query* | BigQuery standard SQL query | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionFactory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.connection Factory* | ConnectionFactory to obtain connection to Bigquery Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.projectId* | Google Cloud Project Id | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-bigquery-sql.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-calendar-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-calendar-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a5fa662
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-calendar-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-google-calendar-kafka-connector-sink]]
+= camel-google-calendar-kafka-connector sink configuration
+
+When using camel-google-calendar-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-calendar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-calendar sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [ACL] [LIST] [CALENDARS] [CHANNELS] [COLORS] [FREEBUSY] [EVENTS] [SETTINGS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [calendarImport] [clear] [delete] [get] [insert] [instances] [list] [move] [patch] [query] [quickAdd] [stop] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google calendar application name. Example would be camel-google-calendar/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.emailAddress* | The emailAddress of the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.p12FileName* | The name of the p12 file which has the private key to use with the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scopes* | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | "https://www.googleapis.com/auth/calendar" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | The email address of the user the application is trying to impersonate in the service account flow | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-calendar-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-calendar-kafka-source-connector.adoc
new file mode 100644
index 0000000..71dba4b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-calendar-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-google-calendar-kafka-connector-source]]
+= camel-google-calendar-kafka-connector source configuration
+
+When using camel-google-calendar-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-calendar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-calendar source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [ACL] [LIST] [CALENDARS] [CHANNELS] [COLORS] [FREEBUSY] [EVENTS] [SETTINGS] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [calendarImport] [clear] [delete] [get] [insert] [instances] [list] [move] [patch] [query] [quickAdd] [stop] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google calendar application name. Example would be camel-google-calendar/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.emailAddress* | The emailAddress of the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.p12FileName* | The name of the p12 file which has the private key to use with the Google Service Account. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | "https://www.googleapis.com/auth/calendar" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | The email address of the user the application is trying to impersonate in the service account flow | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-calendar-stream-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-calendar-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..a87bfc5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-calendar-stream-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-google-calendar-stream-kafka-connector-source]]
+= camel-google-calendar-stream-kafka-connector source configuration
+
+When using camel-google-calendar-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-calendar-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-calendar-stream source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.index* | Specifies an index for the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google Calendar application name. Example would be camel-google-calendar/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.calendarId* | The calendarId to be used | "primary" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the calendar application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.considerLastUpdate* | Take into account the lastUpdate of the last event polled as start date for the next poll | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeFromNow* | Consume events in the selected calendar from now on | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Max results to be returned | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The query to execute on calendar | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a calendar application to have to a user account. See \https://developers.google.com/calendar/auth for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar-stream.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar-stream.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-calendar-stream.client Factory* | The client Factory | null | ConfigDef.Importance.MEDIUM
+| * camel.component.google-calendar-stream.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-drive-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-drive-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5ba8d3b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-drive-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-google-drive-kafka-connector-sink]]
+= camel-google-drive-kafka-connector sink configuration
+
+When using camel-google-drive-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-drive-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-drive sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [drive-about] [drive-apps] [drive-changes] [drive-channels] [drive-children] [drive-comments] [drive-files] [drive-parents] [drive-permissions] [drive-properties] [drive-realtime] [drive-replies] [drive-revisions] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [copy] [delete] [get] [getIdForEmail] [insert] [list] [patch] [stop] [touch] [trash] [untrash] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google drive application name. Example would be camel-google-drive/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scopes* | Specifies the level of permissions you want a drive application to have to a user account. See \https://developers.google.com/drive/web/scopes for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-drive-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-drive-kafka-source-connector.adoc
new file mode 100644
index 0000000..fd60a09
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-drive-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-google-drive-kafka-connector-source]]
+= camel-google-drive-kafka-connector source configuration
+
+When using camel-google-drive-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-drive-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-drive source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [drive-about] [drive-apps] [drive-changes] [drive-channels] [drive-children] [drive-comments] [drive-files] [drive-parents] [drive-permissions] [drive-properties] [drive-realtime] [drive-replies] [drive-revisions] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [copy] [delete] [get] [getIdForEmail] [insert] [list] [patch] [stop] [touch] [trash] [untrash] [update] [watch] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google drive application name. Example would be camel-google-drive/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the drive application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a drive application to have to a user account. See \https://developers.google.com/drive/web/scopes for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-drive.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-mail-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-mail-kafka-sink-connector.adoc
new file mode 100644
index 0000000..39e8b8a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-mail-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-google-mail-kafka-connector-sink]]
+= camel-google-mail-kafka-connector sink configuration
+
+When using camel-google-mail-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-mail-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-mail sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [THREADS] [MESSAGES] [ATTACHMENTS] [LABELS] [HISTORY] [DRAFTS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [attachments] [create] [delete] [get] [getProfile] [gmailImport] [insert] [list] [modify] [patch] [send] [trash] [untrash] [update] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google mail application name. Example would be camel-google-mail/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleMailClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-mail-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-mail-kafka-source-connector.adoc
new file mode 100644
index 0000000..08b1dbe
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-mail-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-google-mail-kafka-connector-source]]
+= camel-google-mail-kafka-connector source configuration
+
+When using camel-google-mail-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-mail-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-mail source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [THREADS] [MESSAGES] [ATTACHMENTS] [LABELS] [HISTORY] [DRAFTS] [USERS] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [attachments] [create] [delete] [get] [getProfile] [gmailImport] [insert] [list] [modify] [patch] [send] [trash] [untrash] [update] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google mail application name. Example would be camel-google-mail/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail.clientFactory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleMailClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-mail-stream-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-mail-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..41f3b4d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-mail-stream-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-google-mail-stream-kafka-connector-source]]
+= camel-google-mail-stream-kafka-connector source configuration
+
+When using camel-google-mail-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-mail-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-mail-stream source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.index* | Specifies an index for the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google mail application name. Example would be camel-google-mail/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the mail application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labels* | Comma separated list of labels to take into account | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.markAsRead* | Mark the message as read once it has been consumed | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Max results to be returned | 10L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The query to execute on gmail box | "is:unread" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.clientFactory* | The client Factory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-mail-stream.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-pubsub-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-pubsub-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0e6ebdc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-pubsub-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-google-pubsub-kafka-connector-sink]]
+= camel-google-pubsub-kafka-connector sink configuration
+
+When using camel-google-pubsub-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-pubsub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-pubsub sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.projectId* | Project Id | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.destinationName* | Destination Name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.ackMode* | AUTO = exchange gets ack'ed/nack'ed on completion. NONE = downstream process has to ack/nack explicitly One of: [AUTO] [NONE] | "AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.concurrentConsumers* | The number of parallel streams consuming from the subscription | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | ConnectionFactory to obtain connection to PubSub Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loggerId* | Logger ID to use when a match to the parent route required | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerPoll* | The max number of messages to receive from the server in a single API call | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.connectionFactory* | Sets the connection factory to use: provides the ability to explicitly manage connection credentials: - the path to the key file - the Service Account Key / Email pair | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-pubsub-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-pubsub-kafka-source-connector.adoc
new file mode 100644
index 0000000..d3227b9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-pubsub-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-google-pubsub-kafka-connector-source]]
+= camel-google-pubsub-kafka-connector source configuration
+
+When using camel-google-pubsub-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-pubsub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-pubsub source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.projectId* | Project Id | null | ConfigDef.Importance.HIGH
+| *camel.source.path.destinationName* | Destination Name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.ackMode* | AUTO = exchange gets ack'ed/nack'ed on completion. NONE = downstream process has to ack/nack explicitly One of: [AUTO] [NONE] | "AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | The number of parallel streams consuming from the subscription | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | ConnectionFactory to obtain connection to PubSub Service. If non provided the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.loggerId* | Logger ID to use when a match to the parent route required | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | The max number of messages to receive from the server in a single API call | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.connectionFactory* | Sets the connection factory to use: provides the ability to explicitly manage connection credentials: - the path to the key file - the Service Account Key / Email pair | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-pubsub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-sheets-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-sheets-kafka-sink-connector.adoc
new file mode 100644
index 0000000..abf7bf0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-sheets-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-google-sheets-kafka-connector-sink]]
+= camel-google-sheets-kafka-connector sink configuration
+
+When using camel-google-sheets-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-sheets-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-sheets sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [SPREADSHEETS] [DATA] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [create] [get] [update] [append] [batchUpdate] [clear] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | Google Sheets application name. Example would be camel-google-sheets/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | Client ID of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientSecret* | Client secret of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Sheets component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.clientFactory* | To use the GoogleSheetsClientFactory as factory for creating the client. Will by default use BatchGoogleSheetsClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-sheets-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-sheets-kafka-source-connector.adoc
new file mode 100644
index 0000000..2c7a41b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-sheets-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-google-sheets-kafka-connector-source]]
+= camel-google-sheets-kafka-connector source configuration
+
+When using camel-google-sheets-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-sheets-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-sheets source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [SPREADSHEETS] [DATA] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [create] [get] [update] [append] [batchUpdate] [clear] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google Sheets application name. Example would be camel-google-sheets/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Sheets component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets.clientFactory* | To use the GoogleSheetsClientFactory as factory for creating the client. Will by default use BatchGoogleSheetsClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-google-sheets-stream-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-google-sheets-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..4b70577
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-google-sheets-stream-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-google-sheets-stream-kafka-connector-source]]
+= camel-google-sheets-stream-kafka-connector source configuration
+
+When using camel-google-sheets-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-google-sheets-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-google-sheets-stream source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | Sets the apiName. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | Google sheets application name. Example would be camel-google-sheets/1.0 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | Client ID of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientSecret* | Client secret of the sheets application | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeGridData* | True if grid data should be returned. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.majorDimension* | Specifies the major dimension that results should use.. One of: [ROWS] [COLUMNS] [DIMENSION_UNSPECIFIED] | "ROWS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Specify the maximum number of returned results. This will limit the number of rows in a returned value range data set or the number of returned value ranges in a batch request. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.range* | Specifies the range of rows and columns in a sheet to get data from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.refreshToken* | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scopes* | Specifies the level of permissions you want a sheets application to have to a user account. See \https://developers.google.com/identity/protocols/googlescopes for more info. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitResults* | True if value range result should be split into rows or columns to process each of them individually. When true each row or column is represented with a separate exchange in batch processing. Otherwise value range object is used as exchange junk size. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.spreadsheetId* | Specifies the spreadsheet identifier that is used to identify the target to obtain. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueRenderOption* | Determines how values should be rendered in the output. One of: [FORMATTED_VALUE] [UNFORMATTED_VALUE] [FORMULA] | "FORMATTED_VALUE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.google-sheets-stream.clientFactory* | To use the GoogleSheetsClientFactory as factory for creating the client. Will by default use BatchGoogleSheetsClientFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-gora-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-gora-kafka-sink-connector.adoc
new file mode 100644
index 0000000..891f839
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-gora-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-gora-kafka-connector-sink]]
+= camel-gora-kafka-connector sink configuration
+
+When using camel-gora-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-gora-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-gora sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Instance name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataStoreClass* | The type of the dataStore | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyClass* | The type class of the key | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueClass* | The type of the value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushOnEveryOperation* | Flush on every operation | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hadoopConfiguration* | Hadoop Configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-gora-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-gora-kafka-source-connector.adoc
new file mode 100644
index 0000000..d5abe1b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-gora-kafka-source-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-gora-kafka-connector-source]]
+= camel-gora-kafka-connector source configuration
+
+When using camel-gora-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-gora-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-gora source connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Instance name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataStoreClass* | The type of the dataStore | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyClass* | The type class of the key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueClass* | The type of the value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent consumers | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endKey* | The End Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endTime* | The End Time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fields* | The Fields | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyRangeFrom* | The Key Range From | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyRangeTo* | The Key Range To | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | The Limit | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startKey* | The Start Key | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startTime* | The Start Time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeRangeFrom* | The Time Range From | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeRangeTo* | The Time Range To | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timestamp* | The Timestamp | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hadoopConfiguration* | Hadoop Configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.gora.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-grape-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-grape-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f500280
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-grape-kafka-sink-connector.adoc
@@ -0,0 +1,33 @@
+// kafka-connector options: START
+[[camel-grape-kafka-connector-sink]]
+= camel-grape-kafka-connector sink configuration
+
+When using camel-grape-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-grape-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-grape sink connector supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.defaultCoordinates* | Maven coordinates to use as default to grab if the message body is empty. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grape.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grape.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grape.patchesRepository* | Implementation of org.apache.camel.component.grape.PatchesRepository, by default: FilePatchesRepository | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-graphql-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-graphql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e27a6d1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-graphql-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-graphql-kafka-connector-sink]]
+= camel-graphql-kafka-connector sink configuration
+
+When using camel-graphql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-graphql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-graphql sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The GraphQL server URI. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operationName* | The query or mutation name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host in the format hostname:port. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | The query text. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryFile* | The query file name located in the classpath. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.variables* | The JsonObject instance containing the operation variables. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token sent in the Authorization header. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for Basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for Basic authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.graphql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.graphql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-grpc-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-grpc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bfc7d84
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-grpc-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-grpc-kafka-connector-sink]]
+= camel-grpc-kafka-connector sink configuration
+
+When using camel-grpc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-grpc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-grpc sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The gRPC server host name. This is localhost or 0.0.0.0 when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The gRPC local or remote server port | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.service* | Fully qualified service name from the protocol buffer descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.flowControlWindow* | The HTTP/2 flow control window size (MiB) | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessageSize* | The maximum message size allowed to be received/sent (MiB) | 4194304 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | gRPC method name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerStrategy* | The mode used to communicate with a remote gRPC server. In SIMPLE mode a single exchange is translated into a remote procedure call. In STREAMING mode all exchanges will be sent within the same request (input and output of the recipient gRPC service must be of type 'stream'). One of: [SIMPLE] [STREAMING] | "SIMPLE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamRepliesTo* | When using STREAMING client mode, it indicates the endpoint where responses should be forwarded. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userAgent* | The user agent header passed to the server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationType* | Authentication method type in advance to the SSL/TLS negotiation One of: [NONE] [GOOGLE] [JWT] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtAlgorithm* | JSON Web Token sign algorithm One of: [HMAC256] [HMAC384] [HMAC512] | "HMAC256" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtIssuer* | JSON Web Token issuer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtSecret* | JSON Web Token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jwtSubject* | JSON Web Token subject | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyCertChainResource* | The X.509 certificate chain file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPassword* | The PKCS#8 private key file password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyResource* | The PKCS#8 private key file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.negotiationType* | Identifies the security negotiation type used for HTTP/2 communication One of: [TLS] [PLAINTEXT_UPGRADE] [PLAINTEXT] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceAccountResource* | Service Account key file in JSON format resource link supported by the Google Cloud SDK | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCertCollectionResource* | The trusted certificates collection file resource in PEM format for verifying the remote endpoint's certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-grpc-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-grpc-kafka-source-connector.adoc
new file mode 100644
index 0000000..7ad08bf
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-grpc-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-grpc-kafka-connector-source]]
+= camel-grpc-kafka-connector source configuration
+
+When using camel-grpc-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-grpc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-grpc source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The gRPC server host name. This is localhost or 0.0.0.0 when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The gRPC local or remote server port | null | ConfigDef.Importance.HIGH
+| *camel.source.path.service* | Fully qualified service name from the protocol buffer descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.flowControlWindow* | The HTTP/2 flow control window size (MiB) | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessageSize* | The maximum message size allowed to be received/sent (MiB) | 4194304 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerStrategy* | This option specifies the top-level strategy for processing service requests and responses in streaming mode. If an aggregation strategy is selected, all requests will be accumulated in the list, then transferred to the flow, and the accumulated responses will be sent to the sender. If a propagation strategy is selected, request is sent to the stream, and the response will be immediately sent back to the sender. One of: [AGGREGATION] [PROPAGATION] | "PROPAGATION" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnCompleted* | Determines if onCompleted events should be pushed to the Camel route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnError* | Determines if onError events should be pushed to the Camel route. Exceptions will be set as message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentCallsPer Connection* | The maximum number of concurrent calls permitted for each incoming server connection | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationType* | Authentication method type in advance to the SSL/TLS negotiation One of: [NONE] [GOOGLE] [JWT] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtAlgorithm* | JSON Web Token sign algorithm One of: [HMAC256] [HMAC384] [HMAC512] | "HMAC256" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtIssuer* | JSON Web Token issuer | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtSecret* | JSON Web Token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jwtSubject* | JSON Web Token subject | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyCertChainResource* | The X.509 certificate chain file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPassword* | The PKCS#8 private key file password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyResource* | The PKCS#8 private key file resource in PEM format link | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.negotiationType* | Identifies the security negotiation type used for HTTP/2 communication One of: [TLS] [PLAINTEXT_UPGRADE] [PLAINTEXT] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceAccountResource* | Service Account key file in JSON format resource link supported by the Google Cloud SDK | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCertCollectionResource* | The trusted certificates collection file resource in PEM format for verifying the remote endpoint's certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.grpc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-guava-eventbus-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-guava-eventbus-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6c921ab
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-guava-eventbus-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-guava-eventbus-kafka-connector-sink]]
+= camel-guava-eventbus-kafka-connector sink configuration
+
+When using camel-guava-eventbus-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-guava-eventbus-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-guava-eventbus sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.eventBusRef* | To lookup the Guava EventBus from the registry with the given name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventClass* | If used on the consumer side of the route, will filter events received from the EventBus to the instances of the class and superclasses of eventClass. Null value of this option is equal to setting it to the java.lang.Object i.e. the consumer will capture all messages incoming to the event bus. This option cannot be used together with listenerInterface option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.eventBus* | To use the given Guava EventBus instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-guava-eventbus-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-guava-eventbus-kafka-source-connector.adoc
new file mode 100644
index 0000000..b9a322e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-guava-eventbus-kafka-source-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-guava-eventbus-kafka-connector-source]]
+= camel-guava-eventbus-kafka-connector source configuration
+
+When using camel-guava-eventbus-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-guava-eventbus-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-guava-eventbus source connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.eventBusRef* | To lookup the Guava EventBus from the registry with the given name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventClass* | If used on the consumer side of the route, will filter events received from the EventBus to the instances of the class and superclasses of eventClass. Null value of this option is equal to setting it to the java.lang.Object i.e. the consumer will capture all messages incoming to the event bus. This option cannot be used together with listenerInterface option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.eventBus* | To use the given Guava EventBus instance | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.listenerInterface* | The interface with method(s) marked with the Subscribe annotation. Dynamic proxy will be created over the interface so it could be registered as the EventBus listener. Particularly useful when creating multi-event listeners and for handling DeadEvent properly. This option cannot be used together with eventClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.guava-eventbus.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..abf6a60
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-atomicvalue-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-atomicvalue-kafka-connector-sink]]
+= camel-hazelcast-atomicvalue-kafka-connector sink configuration
+
+When using camel-hazelcast-atomicvalue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-atomicvalue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-atomicvalue sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-atomicvalue.hazelcast Mode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-instance-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-instance-kafka-source-connector.adoc
new file mode 100644
index 0000000..a7a9868
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-instance-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-instance-kafka-connector-source]]
+= camel-hazelcast-instance-kafka-connector source configuration
+
+When using camel-hazelcast-instance-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-instance-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-instance source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-instance.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-list-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-list-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3a41591
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-list-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-list-kafka-connector-sink]]
+= camel-hazelcast-list-kafka-connector sink configuration
+
+When using camel-hazelcast-list-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-list-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-list sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-list-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-list-kafka-source-connector.adoc
new file mode 100644
index 0000000..0001302
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-list-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-list-kafka-connector-source]]
+= camel-hazelcast-list-kafka-connector source configuration
+
+When using camel-hazelcast-list-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-list-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-list source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-list.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-map-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-map-kafka-sink-connector.adoc
new file mode 100644
index 0000000..704a618
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-map-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-map-kafka-connector-sink]]
+= camel-hazelcast-map-kafka-connector sink configuration
+
+When using camel-hazelcast-map-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-map sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-map-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-map-kafka-source-connector.adoc
new file mode 100644
index 0000000..534710b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-map-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-map-kafka-connector-source]]
+= camel-hazelcast-map-kafka-connector source configuration
+
+When using camel-hazelcast-map-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-map-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-map source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-map.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-multimap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-multimap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e43da97
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-multimap-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-multimap-kafka-connector-sink]]
+= camel-hazelcast-multimap-kafka-connector sink configuration
+
+When using camel-hazelcast-multimap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-multimap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-multimap sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-multimap-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-multimap-kafka-source-connector.adoc
new file mode 100644
index 0000000..bad31ea
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-multimap-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-multimap-kafka-connector-source]]
+= camel-hazelcast-multimap-kafka-connector source configuration
+
+When using camel-hazelcast-multimap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-multimap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-multimap source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-multimap.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-queue-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..04d863d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-queue-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-queue-kafka-connector-sink]]
+= camel-hazelcast-queue-kafka-connector sink configuration
+
+When using camel-hazelcast-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-queue sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-queue-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-queue-kafka-source-connector.adoc
new file mode 100644
index 0000000..b64099d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-queue-kafka-source-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-hazelcast-queue-kafka-connector-source]]
+= camel-hazelcast-queue-kafka-connector source configuration
+
+When using camel-hazelcast-queue-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-queue source connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollingTimeout* | Define the polling timeout of the Queue consumer in Poll mode | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | Define the Pool size for Queue Consumer Executor | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueConsumerMode* | Define the Queue Consumer mode: Listen or Poll One of: [listen] [poll] | "Listen" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-queue.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f3e8662
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-replicatedmap-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-replicatedmap-kafka-connector-sink]]
+= camel-hazelcast-replicatedmap-kafka-connector sink configuration
+
+When using camel-hazelcast-replicatedmap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-replicatedmap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-replicatedmap sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Mode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-replicatedmap-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-replicatedmap-kafka-source-connector.adoc
new file mode 100644
index 0000000..84b69ca
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-replicatedmap-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-replicatedmap-kafka-connector-source]]
+= camel-hazelcast-replicatedmap-kafka-connector source configuration
+
+When using camel-hazelcast-replicatedmap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-replicatedmap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-replicatedmap source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.bridge ErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-replicatedmap.hazelcast Mode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0e16d31
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-ringbuffer-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-ringbuffer-kafka-connector-sink]]
+= camel-hazelcast-ringbuffer-kafka-connector sink configuration
+
+When using camel-hazelcast-ringbuffer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-ringbuffer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-ringbuffer sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.hazelcast Instance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-ringbuffer.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-seda-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-seda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..28b5b27
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-seda-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-hazelcast-seda-kafka-connector-sink]]
+= camel-hazelcast-seda-kafka-connector sink configuration
+
+When using camel-hazelcast-seda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-seda sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.concurrentConsumers* | To use concurrent consumers polling from the SEDA queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onErrorDelay* | Milliseconds before consumer continues polling after an error has occurred. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pollTimeout* | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-seda-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-seda-kafka-source-connector.adoc
new file mode 100644
index 0000000..25d9816
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-seda-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-hazelcast-seda-kafka-connector-source]]
+= camel-hazelcast-seda-kafka-connector source configuration
+
+When using camel-hazelcast-seda-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-seda source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | To use concurrent consumers polling from the SEDA queue. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onErrorDelay* | Milliseconds before consumer continues polling after an error has occurred. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-seda.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-set-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-set-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7018724
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-set-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hazelcast-set-kafka-connector-sink]]
+= camel-hazelcast-set-kafka-connector sink configuration
+
+When using camel-hazelcast-set-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-set sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-set-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-set-kafka-source-connector.adoc
new file mode 100644
index 0000000..370013c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-set-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-hazelcast-set-kafka-connector-source]]
+= camel-hazelcast-set-kafka-connector source configuration
+
+When using camel-hazelcast-set-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-set source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-set.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-topic-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-topic-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1edd971
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-topic-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-hazelcast-topic-kafka-connector-sink]]
+= camel-hazelcast-topic-kafka-connector sink configuration
+
+When using camel-hazelcast-topic-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-topic-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-topic sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reliable* | Define if the endpoint will use a reliable Topic struct or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hazelcast-topic-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hazelcast-topic-kafka-source-connector.adoc
new file mode 100644
index 0000000..f51294d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hazelcast-topic-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-hazelcast-topic-kafka-connector-source]]
+= camel-hazelcast-topic-kafka-connector source configuration
+
+When using camel-hazelcast-topic-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hazelcast-topic-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hazelcast-topic source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.defaultOperation* | To specify a default operation to use, if no operation header has been provided. One of: [put] [delete] [get] [update] [query] [getAll] [clear] [putIfAbsent] [allAll] [removeAll] [retainAll] [evict] [evictAll] [valueCount] [containsKey] [containsValue] [keySet] [removevalue] [increment] [decrement] [setvalue] [destroy] [compareAndSet] [getAndAdd] [add] [offer] [peek] [poll] [remainingCapacity] [drainTo] [removeIf] [take] [publish] [readOnceHeal] [readOnceTail] [capacity] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hazelcastInstanceName* | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reliable* | Define if the endpoint will use a reliable Topic struct or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastInstance* | The hazelcast instance reference which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hazelcast-topic.hazelcastMode* | The hazelcast mode reference which kind of instance should be used. If you don't specify the mode, then the node mode will be the default. | "node" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hbase-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hbase-kafka-sink-connector.adoc
new file mode 100644
index 0000000..33768b0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hbase-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-hbase-kafka-connector-sink]]
+= camel-hbase-kafka-connector sink configuration
+
+When using camel-hbase-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hbase sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.tableName* | The name of the table | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cellMappingStrategyFactory* | To use a custom CellMappingStrategyFactory that is responsible for mapping cells. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filters* | A list of filters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingStrategyClassName* | The class name of a custom mapping strategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mappingStrategyName* | The strategy to use for mapping Camel messages to HBase columns. Supported values: header, or body. One of: [header] [body] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rowMapping* | To map the key/values from the Map to a HBaseRow. The following keys is supported: rowId - The id of the row. This has limited use as the row usually changes per Exchange. rowType - The type to covert row id to. Supported operations: CamelHBaseScan. family - The column family. Supports a number suffix for referring to more than one columns. qualifier - The column qualifier. Supports a number suffix for referring to more than one columns. value - The value. Supports a number suffix for referring to more than one columns valueType - The value type. Supports a number suffix for referring to more than one columns. Supported operations: CamelHBaseGet, and CamelHBaseScan. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rowModel* | An instance of org.apache.camel.component.hbase.model.HBaseRow which describes how each row should be modeled | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userGroupInformation* | Defines privileges to communicate with HBase such as using kerberos. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxResults* | The maximum number of rows to scan. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.poolMaxSize* | Maximum number of references to keep for each table in the HTable pool. The default value is 10. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hbase-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hbase-kafka-source-connector.adoc
new file mode 100644
index 0000000..f72fb67
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hbase-kafka-source-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-hbase-kafka-connector-source]]
+= camel-hbase-kafka-connector source configuration
+
+When using camel-hbase-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hbase-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hbase source connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.tableName* | The name of the table | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cellMappingStrategyFactory* | To use a custom CellMappingStrategyFactory that is responsible for mapping cells. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filters* | A list of filters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mappingStrategyClassName* | The class name of a custom mapping strategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mappingStrategyName* | The strategy to use for mapping Camel messages to HBase columns. Supported values: header, or body. One of: [header] [body] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rowMapping* | To map the key/values from the Map to a HBaseRow. The following keys is supported: rowId - The id of the row. This has limited use as the row usually changes per Exchange. rowType - The type to covert row id to. Supported operations: CamelHBaseScan. family - The column family. Supports a number suffix for referring to more than one columns. qualifier - The column qualifier. Supports a number suffix for referring to more than one columns. value - The value. Supports a number suffix for referring to more than one columns valueType - The value type. Supports a number suffix for referring to more than one columns. Supported operations: CamelHBaseGet, and CamelHBaseScan. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rowModel* | An instance of org.apache.camel.component.hbase.model.HBaseRow which describes how each row should be modeled | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userGroupInformation* | Defines privileges to communicate with HBase such as using kerberos. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Gets the maximum number of messages as a limit to poll at each polling. Is default unlimited, but use 0 or negative number to disable it as unlimited. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.operation* | The HBase operation to perform One of: [CamelHBasePut] [CamelHBaseGet] [CamelHBaseScan] [CamelHBaseDelete] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remove* | If the option is true, Camel HBase Consumer will remove the rows which it processes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.removeHandler* | To use a custom HBaseRemoveHandler that is executed when a row is to be removed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.poolMaxSize* | Maximum number of references to keep for each table in the HTable pool. The default value is 10. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hbase.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hdfs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hdfs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1505f2b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hdfs-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-hdfs-kafka-connector-sink]]
+= camel-hdfs-kafka-connector sink configuration
+
+When using camel-hdfs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hdfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hdfs sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostName* | HDFS host to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | HDFS port to use | 8020 | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.path* | The directory path to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectOnStartup* | Whether to connect to the HDFS file system on starting the producer/consumer. If false then the connection is created on-demand. Notice that HDFS may take up till 15 minutes to establish a connection, as it has hardcoded 45 x 20 sec redelivery. By setting this option to false allows your application to startup, and not block for up till 15 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileSystemType* | Set to LOCAL to not use HDFS but local java.io.File instead. One of: [LOCAL] [HDFS] | "HDFS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileType* | The file type to use. For more details see Hadoop HDFS documentation about the various files types. One of: [NORMAL_FILE] [SEQUENCE_FILE] [MAP_FILE] [BLOOMMAP_FILE] [ARRAY_FILE] | "NORMAL_FILE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | The type for the key in case of sequence or map files. One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "NULL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedNodes* | A comma separated list of named nodes (e.g. srv11.example.com:8020,srv12.example.com:8020) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.owner* | The file owner must match this owner for the consumer to pickup the file. Otherwise the file is skipped. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.valueType* | The type for the key in case of sequence or map files One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "BYTES" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.append* | Append to existing file. Notice that not all HDFS file systems support the append option. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.overwrite* | Whether to overwrite existing files with the same name | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockSize* | The size of the HDFS blocks | 67108864L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The buffer size used by HDFS | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.checkIdleInterval* | How often (time in millis) in to run the idle checker background task. This option is only in use if the splitter strategy is IDLE. | 500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunkSize* | When reading a normal file, this is split into chunks producing a message per chunk. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionCodec* | The compression codec to use One of: [DEFAULT] [GZIP] [BZIP2] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionType* | The compression type to use (is default not in use) One of: [NONE] [RECORD] [BLOCK] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.openedSuffix* | When a file is opened for reading/writing the file is renamed with this suffix to avoid to read it during the writing phase. | "opened" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readSuffix* | Once the file has been read is renamed with this suffix to avoid to read it again. | "read" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replication* | The HDFS replication factor | 3 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splitStrategy* | In the current version of Hadoop opening a file in append mode is disabled since it's not very reliable. So, for the moment, it's only possible to create new files. The Camel HDFS endpoint tries to solve this problem in this way: If the split strategy option has been defined, the hdfs path will be used as a directory and files will be created using the configured UuidGenerator. Every time a splitting condition is met, a new file is created. The splitStrategy option is defined as a string with the following syntax: splitStrategy=ST:value,ST:value,... where ST can be: BYTES a new file is created, and the old is closed when the number of written bytes is more than value MESSAGES a new file is created, and the old is closed when the number of written messages is more than value IDLE a new file is created, and the old is closed when no writing happened in the last value milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosConfigFileLocation* | The location of the kerb5.conf file (\https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosKeytabLocation* | The location of the keytab file used to authenticate with the kerberos nodes (contains pairs of kerberos principals and encrypted keys (which are derived from the Kerberos password)) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosUsername* | The username used to authenticate with the kerberos nodes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.jAASConfiguration* | To use the given configuration for security with JAAS. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.kerberosConfigFile* | To use kerberos authentication, set the value of the 'java.security.krb5.conf' environment variable to an existing file. If the environment variable is already set, warn if different than the specified parameter | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hdfs-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hdfs-kafka-source-connector.adoc
new file mode 100644
index 0000000..4dfe7ff
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hdfs-kafka-source-connector.adoc
@@ -0,0 +1,77 @@
+// kafka-connector options: START
+[[camel-hdfs-kafka-connector-source]]
+= camel-hdfs-kafka-connector source configuration
+
+When using camel-hdfs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hdfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hdfs source connector supports 51 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.hostName* | HDFS host to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | HDFS port to use | 8020 | ConfigDef.Importance.MEDIUM
+| *camel.source.path.path* | The directory path to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectOnStartup* | Whether to connect to the HDFS file system on starting the producer/consumer. If false then the connection is created on-demand. Notice that HDFS may take up till 15 minutes to establish a connection, as it has hardcoded 45 x 20 sec redelivery. By setting this option to false allows your application to startup, and not block for up till 15 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileSystemType* | Set to LOCAL to not use HDFS but local java.io.File instead. One of: [LOCAL] [HDFS] | "HDFS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileType* | The file type to use. For more details see Hadoop HDFS documentation about the various files types. One of: [NORMAL_FILE] [SEQUENCE_FILE] [MAP_FILE] [BLOOMMAP_FILE] [ARRAY_FILE] | "NORMAL_FILE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyType* | The type for the key in case of sequence or map files. One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "NULL" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namedNodes* | A comma separated list of named nodes (e.g. srv11.example.com:8020,srv12.example.com:8020) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.owner* | The file owner must match this owner for the consumer to pickup the file. Otherwise the file is skipped. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueType* | The type for the key in case of sequence or map files One of: [NULL] [BOOLEAN] [BYTE] [INT] [FLOAT] [LONG] [DOUBLE] [TEXT] [BYTES] | "BYTES" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pattern* | The pattern used for scanning the directory | "*" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.blockSize* | The size of the HDFS blocks | 67108864L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The buffer size used by HDFS | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkIdleInterval* | How often (time in millis) in to run the idle checker background task. This option is only in use if the splitter strategy is IDLE. | 500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunkSize* | When reading a normal file, this is split into chunks producing a message per chunk. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compressionCodec* | The compression codec to use One of: [DEFAULT] [GZIP] [BZIP2] | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compressionType* | The compression type to use (is default not in use) One of: [NONE] [RECORD] [BLOCK] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.openedSuffix* | When a file is opened for reading/writing the file is renamed with this suffix to avoid to read it during the writing phase. | "opened" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readSuffix* | Once the file has been read is renamed with this suffix to avoid to read it again. | "read" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replication* | The HDFS replication factor | 3 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitStrategy* | In the current version of Hadoop opening a file in append mode is disabled since it's not very reliable. So, for the moment, it's only possible to create new files. The Camel HDFS endpoint tries to solve this problem in this way: If the split strategy option has been defined, the hdfs path will be used as a directory and files will be created using the configured UuidGenerator. Every time a splitting condition is met, a new file is created. The splitStrategy option is defined as a string with the following syntax: splitStrategy=ST:value,ST:value,... where ST can be: BYTES a new file is created, and the old is closed when the number of written bytes is more than value MESSAGES a new file is created, and the old is closed when the number of written messages is more than value IDLE a new file is created, and the old is closed when no writing happened in the last value milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default a limit of 100 is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Values can only be greater than 0. Notice: If this option is in use then the limit will be applied on the valid files. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosConfigFileLocation* | The location of the kerb5.conf file (\https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosKeytabLocation* | The location of the keytab file used to authenticate with the kerberos nodes (contains pairs of kerberos principals and encrypted keys (which are derived from the Kerberos password)) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosUsername* | The username used to authenticate with the kerberos nodes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.jAASConfiguration* | To use the given configuration for security with JAAS. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.kerberosConfigFile* | To use kerberos authentication, set the value of the 'java.security.krb5.conf' environment variable to an existing file. If the environment variable is already set, warn if different than the specified parameter | null | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hdfs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hipchat-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hipchat-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cd5d926
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hipchat-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-hipchat-kafka-connector-sink]]
+= camel-hipchat-kafka-connector sink configuration
+
+When using camel-hipchat-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hipchat-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hipchat sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol for the hipchat server, such as http. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | The host for the hipchat server, such as api.hipchat.com | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port for the hipchat server. Is by default 80. | "80" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authToken* | OAuth 2 auth token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumeUsers* | Username(s) when consuming messages from the hiptchat server. Multiple user names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | The CloseableHttpClient reference from registry to be used during API HTTP requests. | "CloseableHttpClient default from HttpClient library" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-hipchat-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-hipchat-kafka-source-connector.adoc
new file mode 100644
index 0000000..9f5a401
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-hipchat-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-hipchat-kafka-connector-source]]
+= camel-hipchat-kafka-connector source configuration
+
+When using camel-hipchat-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-hipchat-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-hipchat source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol for the hipchat server, such as http. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | The host for the hipchat server, such as api.hipchat.com | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port for the hipchat server. Is by default 80. | "80" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authToken* | OAuth 2 auth token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeUsers* | Username(s) when consuming messages from the hiptchat server. Multiple user names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClient* | The CloseableHttpClient reference from registry to be used during API HTTP requests. | "CloseableHttpClient default from HttpClient library" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.hipchat.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-http-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-http-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6969b4a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-http-kafka-sink-connector.adoc
@@ -0,0 +1,98 @@
+// kafka-connector options: START
+[[camel-http-kafka-connector-sink]]
+= camel-http-kafka-connector sink configuration
+
+When using camel-http-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-http sink connector supports 72 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The url of the HTTP endpoint to call. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearExpiredCookies* | Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expired. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyHeaders* | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.customHostHeader* | To use custom host header for producer. When not set in query will be ignored. When set will override host header derived from url. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMethod* | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. One of: [GET] [POST] [PUT] [DELETE] [HEAD] [OPTIONS] [TRACE] [PATCH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreResponseBody* | If this option is true, The http producer won't read response body and cache the input stream | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieStore* | To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). If a cookieHandler is set then the cookie store is also forced to be a noop cookie store as cookie handling is then performed by the cookieHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteWithBody* | Whether the HTTP DELETE should include the message body or not. By default HTTP DELETE do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.getWithBody* | Whether the HTTP GET should include the message body or not. By default HTTP GET do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientBuilder* | Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConnectionManager* | To use a custom HttpClientConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | Sets a custom HttpClient to be used by the producer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientConfigurer* | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientOptions* | To configure the HttpClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpContext* | To use a custom HttpContext instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSystemProperties* | To use System Properties as fallback for configuration | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Proxy authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Proxy authentication host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Proxy authentication method to use One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Proxy authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPort* | Proxy authentication port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthScheme* | Proxy authentication scheme to use One of: [http] [https] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Proxy authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | Proxy hostname to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Proxy port to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authDomain* | Authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationPreemptive* | If this option is true, camel-http sends preemptive basic authentication to the server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authHost* | Authentication host to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethod* | Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethodPriority* | Which authentication method to prioritize to use, either as Basic, Digest or NTLM. One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authPassword* | Authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authUsername* | Authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.util.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.cookieStore* | To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.clientConnectionManager* | To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectionTimeToLive* | The time for connection to live, the time unit is millisecond, the default value is always keep alive. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpClientConfigurer* | To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpConfiguration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.httpContext* | To use a custom org.apache.http.protocol.HttpContext when executing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.support.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.http.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectionRequestTimeout* | The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.connectTimeout* | Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.http.socketTimeout* | Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-https-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-https-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a058fc7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-https-kafka-sink-connector.adoc
@@ -0,0 +1,98 @@
+// kafka-connector options: START
+[[camel-https-kafka-connector-sink]]
+= camel-https-kafka-connector sink configuration
+
+When using camel-https-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-https-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-https sink connector supports 72 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpUri* | The url of the HTTP endpoint to call. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, HttpProducer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the option throwExceptionOnFailure to be false to let the HttpProducer send all the fault response back. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearExpiredCookies* | Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expired. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionClose* | Specifies whether a Connection Close header must be added to HTTP Request. By default connectionClose is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyHeaders* | If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not propagating IN headers). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.customHostHeader* | To use custom host header for producer. When not set in query will be ignored. When set will override host header derived from url. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpMethod* | Configure the HTTP method to use. The HttpMethod header cannot override this option if set. One of: [GET] [POST] [PUT] [DELETE] [HEAD] [OPTIONS] [TRACE] [PATCH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreResponseBody* | If this option is true, The http producer won't read response body and cache the input stream | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, HttpProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieStore* | To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). If a cookieHandler is set then the cookie store is also forced to be a noop cookie store as cookie handling is then performed by the cookieHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteWithBody* | Whether the HTTP DELETE should include the message body or not. By default HTTP DELETE do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.getWithBody* | Whether the HTTP GET should include the message body or not. By default HTTP GET do not include any HTTP body. However in some rare cases users may need to be able to include the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientBuilder* | Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConnectionManager* | To use a custom HttpClientConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | Sets a custom HttpClient to be used by the producer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientConfigurer* | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientOptions* | To configure the HttpClient using the key/values from the Map. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpContext* | To use a custom HttpContext instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSystemProperties* | To use System Properties as fallback for configuration | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Proxy authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Proxy authentication host | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Proxy authentication method to use One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Proxy authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPort* | Proxy authentication port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthScheme* | Proxy authentication scheme to use One of: [http] [https] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Proxy authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | Proxy hostname to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | Proxy port to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authDomain* | Authentication domain to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationPreemptive* | If this option is true, camel-http sends preemptive basic authentication to the server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authHost* | Authentication host to use with NTML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethod* | Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authMethodPriority* | Which authentication method to prioritize to use, either as Basic, Digest or NTLM. One of: [Basic] [Digest] [NTLM] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authPassword* | Authentication password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authUsername* | Authentication username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.util.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.cookieStore* | To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.clientConnectionManager* | To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectionsPerRoute* | The maximum number of connections per route. | 20 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectionTimeToLive* | The time for connection to live, the time unit is millisecond, the default value is always keep alive. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpClientConfigurer* | To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpConfiguration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.httpContext* | To use a custom org.apache.http.protocol.HttpContext when executing requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.maxTotalConnections* | The maximum number of connections. | 200 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.sslContextParameters* | To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.support.jsse.SSLContextParameters is supported per HttpComponent. If you need to use 2 or more different instances, you need to define a new HttpComponent per instance you need. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.https.x509HostnameVerifier* | To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectionRequestTimeout* | The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.connectTimeout* | Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.https.socketTimeout* | Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-iec60870-client-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-iec60870-client-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d7aca49
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-iec60870-client-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-iec60870-client-kafka-connector-sink]]
+= camel-iec60870-client-kafka-connector sink configuration
+
+When using camel-iec60870-client-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-client sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-iec60870-client-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-iec60870-client-kafka-source-connector.adoc
new file mode 100644
index 0000000..76c457d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-iec60870-client-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-iec60870-client-kafka-connector-source]]
+= camel-iec60870-client-kafka-connector source configuration
+
+When using camel-iec60870-client-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-client source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-client.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-iec60870-server-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-iec60870-server-kafka-sink-connector.adoc
new file mode 100644
index 0000000..72cd466
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-iec60870-server-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-iec60870-server-kafka-connector-sink]]
+= camel-iec60870-server-kafka-connector sink configuration
+
+When using camel-iec60870-server-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-server sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterNonExecute* | Filter out all requests which don't have the execute bit set | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-iec60870-server-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-iec60870-server-kafka-source-connector.adoc
new file mode 100644
index 0000000..7efea79
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-iec60870-server-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-iec60870-server-kafka-connector-source]]
+= camel-iec60870-server-kafka-connector source configuration
+
+When using camel-iec60870-server-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iec60870-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iec60870-server source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uriPath* | The object information address | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.dataModuleOptions* | Data module options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterNonExecute* | Filter out all requests which don't have the execute bit set | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocolOptions* | Protocol options | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgeWindow* | Parameter W - Acknowledgment window. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.adsuAddressType* | The common ASDU address size. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeOfTransmissionType* | The cause of transmission type. May be either SIZE_1 or SIZE_2. One of: [SIZE_1] [SIZE_2] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.informationObjectAddressType* | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. One of: [SIZE_1] [SIZE_2] [SIZE_3] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxUnacknowledged* | Parameter K - Maximum number of un-acknowledged messages. | 15 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout1* | Timeout T1 in milliseconds. | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout2* | Timeout T2 in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout3* | Timeout T3 in milliseconds. | 20000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.causeSourceAddress* | Whether to include the source address | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Timeout in millis to wait for client to establish a connected connection. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreBackgroundScan* | Whether background scan transmissions should be ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreDaylightSavingTime* | Whether to ignore or respect DST | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeZone* | The timezone to use. May be any Java time zone string | "UTC" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionId* | An identifier grouping connection instances | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.defaultConnection Options* | Default connection options | null | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iec60870-server.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-cache-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-cache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f9d86ff
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-cache-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-ignite-cache-kafka-connector-sink]]
+= camel-ignite-cache-kafka-connector sink configuration
+
+When using camel-ignite-cache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-cache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-cache sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The cache name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | The Query to execute, only needed for operations that require it, and for the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cachePeekMode* | The CachePeekMode, only needed for operations that require it (IgniteCacheOperation#SIZE). One of: [ALL] [NEAR] [PRIMARY] [BACKUP] [ONHEAP] [OFFHEAP] | "ALL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfInexistentCache* | Whether to fail the initialization if the cache doesn't exist. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The cache operation to invoke. Possible values: GET, PUT, REMOVE, SIZE, REBALANCE, QUERY, CLEAR. One of: [GET] [PUT] [REMOVE] [SIZE] [REBALANCE] [QUERY] [CLEAR] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-cache-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-cache-kafka-source-connector.adoc
new file mode 100644
index 0000000..b79dc14
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-cache-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-ignite-cache-kafka-connector-source]]
+= camel-ignite-cache-kafka-connector source configuration
+
+When using camel-ignite-cache-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-cache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-cache source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The cache name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoUnsubscribe* | Whether auto unsubscribe is enabled in the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireExistingQueryResults* | Whether to process existing results that match the query. Used on initialization of the Continuous Query Consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oneExchangePerUpdate* | Whether to pack each update in an individual Exchange, even if multiple updates are received in one batch. Only used by the Continuous Query Consumer. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageSize* | The page size. Only used by the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_PAGE_SIZE | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | The Query to execute, only needed for operations that require it, and for the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remoteFilter* | The remote filter, only used by the Continuous Query Consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeInterval* | The time interval for the Continuous Query Consumer. Default value notice: ContinuousQuery.DFLT_TIME_INTERVAL | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-cache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-compute-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-compute-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8a39f9b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-compute-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-ignite-compute-kafka-connector-sink]]
+= camel-ignite-compute-kafka-connector sink configuration
+
+When using camel-ignite-compute-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-compute-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-compute sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointId* | The endpoint ID (not used). | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clusterGroupExpression* | An expression that returns the Cluster Group for the IgniteCompute instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.computeName* | The name of the compute job, which will be set via IgniteCompute#withName(String). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.executionType* | The compute operation to perform. Possible values: CALL, BROADCAST, APPLY, EXECUTE, RUN, AFFINITY_CALL, AFFINITY_RUN. The component expects different payload types depending on the operation. One of: [CALL] [BROADCAST] [APPLY] [EXECUTE] [RUN] [AFFINITY_CALL] [AFFINITY_RUN] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.taskName* | The task name, only applicable if using the IgniteComputeExecutionType#EXECUTE execution type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeoutMillis* | The timeout interval for triggered jobs, in milliseconds, which will be set via IgniteCompute#withTimeout(long). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-compute.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-events-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-events-kafka-source-connector.adoc
new file mode 100644
index 0000000..34c60ef
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-events-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-ignite-events-kafka-connector-source]]
+= camel-ignite-events-kafka-connector source configuration
+
+When using camel-ignite-events-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-events-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-events source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.endpointId* | The endpoint ID (not used). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusterGroupExpression* | The cluster group expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.events* | The event types to subscribe to as a comma-separated string of event constants as defined in EventType. For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED. | "EVTS_ALL" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-events.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-idgen-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-idgen-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d5eef07
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-idgen-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-ignite-idgen-kafka-connector-sink]]
+= camel-ignite-idgen-kafka-connector sink configuration
+
+When using camel-ignite-idgen-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-idgen-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-idgen sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The sequence name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batchSize* | The batch size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialValue* | The initial value. | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to invoke on the Ignite ID Generator. Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message. Possible values: ADD_AND_GET, GET, GET_AND_ADD, GET_AND_INCREMENT, INCREMENT_AND_GET. One of: [ADD_AND_GET] [GET] [GET_AND_ADD] [GET_AND_INCREMENT] [INCREMENT_AND_GET] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-idgen.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-messaging-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-messaging-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d8d0adb
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-messaging-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-ignite-messaging-kafka-connector-sink]]
+= camel-ignite-messaging-kafka-connector sink configuration
+
+When using camel-ignite-messaging-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-messaging sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | The topic name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clusterGroupExpression* | The cluster group expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendMode* | The send mode to use. Possible values: UNORDERED, ORDERED. One of: [ORDERED] [UNORDERED] | "UNORDERED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The timeout for the send operation when using ordered messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite Configuration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-messaging-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-messaging-kafka-source-connector.adoc
new file mode 100644
index 0000000..ec28cf9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-messaging-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-ignite-messaging-kafka-connector-source]]
+= camel-ignite-messaging-kafka-connector source configuration
+
+When using camel-ignite-messaging-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-messaging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-messaging source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | The topic name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treatCollectionsAsCache Objects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusterGroupExpression* | The cluster group expression. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.configuration Resource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.ignite Configuration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-messaging.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-queue-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-queue-kafka-sink-connector.adoc
new file mode 100644
index 0000000..525e4c3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-queue-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-ignite-queue-kafka-connector-sink]]
+= camel-ignite-queue-kafka-connector sink configuration
+
+When using camel-ignite-queue-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-queue-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-queue sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The queue name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.capacity* | The queue capacity. Default: non-bounded. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to invoke on the Ignite Queue. Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message. Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY, DRAIN, ELEMENT, PEEK, OFFER, POLL, TAKE, PUT. One of: [CONTAINS] [ADD] [SIZE] [REMOVE] [ITERATOR] [CLEAR] [RETAIN_ALL] [ARRAY] [DRAIN] [ELEMENT] [PEEK] [OFFER] [POLL] [TAKE] [PUT] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeoutMillis* | The queue timeout in milliseconds. Default: no timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-queue.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ignite-set-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ignite-set-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5d5b32c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ignite-set-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-ignite-set-kafka-connector-sink]]
+= camel-ignite-set-kafka-connector sink configuration
+
+When using camel-ignite-set-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ignite-set-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ignite-set sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The set name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.configuration* | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to invoke on the Ignite Set. Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message. Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY.The set operation to perform. One of: [CONTAINS] [ADD] [SIZE] [REMOVE] [ITERATOR] [CLEAR] [RETAIN_ALL] [ARRAY] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propagateIncomingBodyIfNo ReturnValue* | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.treatCollectionsAsCacheObjects* | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.configurationResource* | Resource from where to load configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.ignite* | Ignite instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.igniteConfiguration* | Ignite configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ignite-set.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-imap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-imap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2c92059
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-imap-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-imap-kafka-connector-sink]]
+= camel-imap-kafka-connector sink configuration
+
+When using camel-imap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imap sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-imap-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-imap-kafka-source-connector.adoc
new file mode 100644
index 0000000..a1d9f3b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-imap-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-imap-kafka-connector-source]]
+= camel-imap-kafka-connector source configuration
+
+When using camel-imap-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imap source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imap.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-imaps-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-imaps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7a49be4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-imaps-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-imaps-kafka-connector-sink]]
+= camel-imaps-kafka-connector sink configuration
+
+When using camel-imaps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imaps sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-imaps-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-imaps-kafka-source-connector.adoc
new file mode 100644
index 0000000..c4042dd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-imaps-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-imaps-kafka-connector-source]]
+= camel-imaps-kafka-connector source configuration
+
+When using camel-imaps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-imaps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-imaps source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.imaps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-infinispan-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-infinispan-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bca4dd5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-infinispan-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-infinispan-kafka-connector-sink]]
+= camel-infinispan-kafka-connector sink configuration
+
+When using camel-infinispan-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-infinispan-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-infinispan sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The cache to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.hosts* | Specifies the host of the cache on Infinispan instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryBuilder* | Specifies the query builder. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. One of: [PUT] [PUTASYNC] [PUTALL] [PUTALLASYNC] [PUTIFABSENT] [PUTIFABSENTASYNC] [GET] [GETORDEFAULT] [CONTAINSKEY] [CONTAINSVALUE] [REMOVE] [REMOVEASYNC] [REPLACE] [REPLACEASYNC] [SIZE] [CLEAR] [CLEARASYNC] [QUERY] [STATS] [COMPUTE] [COMPUTEASYNC] | "PUT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheContainer* | Specifies the cache Container to connect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheContainerConfiguration* | The CacheContainer configuration. Uses if the cacheContainer is not defined. Must be the following types: org.infinispan.client.hotrod.configuration.Configuration - for remote cache interaction configuration; org.infinispan.configuration.cache.Configuration - for embedded cache interaction configuration; | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationProperties* | Implementation specific properties for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flags* | A comma separated list of Flag to be applied by default on each cache invocation, not applicable to remote caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remappingFunction* | Set a specific remappingFunction to use in a compute operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHeader* | Store the operation result in a header instead of the message body. By default, resultHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If resultHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. This value can be overridden by an in message header named: CamelInfinispanOperationResultHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.cacheContainer* | Default Cache container | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-infinispan-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-infinispan-kafka-source-connector.adoc
new file mode 100644
index 0000000..bcfcb14
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-infinispan-kafka-source-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-infinispan-kafka-connector-source]]
+= camel-infinispan-kafka-connector source configuration
+
+When using camel-infinispan-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-infinispan-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-infinispan source connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The cache to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.hosts* | Specifies the host of the cache on Infinispan instance | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queryBuilder* | Specifies the query builder. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clusteredListener* | If true, the listener will be installed for the entire cluster | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.command* | The operation to perform. | "PUT" | ConfigDef.Importance.LOW
+| *camel.source.endpoint.customListener* | Returns the custom listener in use, if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventTypes* | Specifies the set of event types to register by the consumer. Multiple event can be separated by comma. The possible event types are: CACHE_ENTRY_ACTIVATED, CACHE_ENTRY_PASSIVATED, CACHE_ENTRY_VISITED, CACHE_ENTRY_LOADED, CACHE_ENTRY_EVICTED, CACHE_ENTRY_CREATED, CACHE_ENTRY_REMOVED, CACHE_ENTRY_MODIFIED, TRANSACTION_COMPLETED, TRANSACTION_REGISTERED, CACHE_ENTRY_INVALIDATED, DATA_REHASHED, TOPOLOGY_CHANGED, PARTITION_STATUS_CHANGED | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | If true, the consumer will receive notifications synchronously | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheContainer* | Specifies the cache Container to connect | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheContainerConfiguration* | The CacheContainer configuration. Uses if the cacheContainer is not defined. Must be the following types: org.infinispan.client.hotrod.configuration.Configuration - for remote cache interaction configuration; org.infinispan.configuration.cache.Configuration - for embedded cache interaction configuration; | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationProperties* | Implementation specific properties for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flags* | A comma separated list of Flag to be applied by default on each cache invocation, not applicable to remote caches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.remappingFunction* | Set a specific remappingFunction to use in a compute operation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultHeader* | Store the operation result in a header instead of the message body. By default, resultHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If resultHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. This value can be overridden by an in message header named: CamelInfinispanOperationResultHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.cacheContainer* | Default Cache container | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.infinispan.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-influxdb-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-influxdb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..801f017
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-influxdb-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-influxdb-kafka-connector-sink]]
+= camel-influxdb-kafka-connector sink configuration
+
+When using camel-influxdb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-influxdb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-influxdb sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionBean* | Connection to the influx database, of class InfluxDB.class | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batch* | Define if this operation is a batch operation or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseName* | The name of the database where the time series will be stored | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Define if this operation is an insert or a query | "insert" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | Define the query in case of operation query | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retentionPolicy* | The string that defines the retention policy to the data created by the endpoint | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.influxdb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.influxdb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-iota-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-iota-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ac52c1c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-iota-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-iota-kafka-connector-sink]]
+= camel-iota-kafka-connector sink configuration
+
+When using camel-iota-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-iota-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-iota sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Component name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.depth* | The depth determines how deep the tangle is analysed for getting Tips | "9" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.minWeightMagnitude* | The minWeightMagnitude is the minimum number of zeroes that a proof-of-work output/transaction hash must end with to be considered valid by full nodes | "14" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Which operation to perform, one of: sendTransfer, getNewAddress, getTransfers One of: [sendTransfer] [getNewAddress] [getTransfers] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.tag* | TAG | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.url* | Node url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityLevel* | Address security level | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.iota.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.iota.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ipfs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ipfs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1b4c181
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ipfs-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-ipfs-kafka-connector-sink]]
+= camel-ipfs-kafka-connector sink configuration
+
+When using camel-ipfs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ipfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ipfs sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.ipfsCmd* | The ipfs command One of: [add] [cat] [get] [version] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outdir* | The ipfs output directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.ipfsHost* | The ipfs host | "127.0.0.1" | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.ipfsPort* | The ipfs port | 5001 | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ipfs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-irc-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-irc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..50d9cbf
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-irc-kafka-sink-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-irc-kafka-connector-sink]]
+= camel-irc-kafka-connector sink configuration
+
+When using camel-irc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-irc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-irc sink connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostname* | Hostname for the IRC chat server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the IRC chat server. If no port is configured then a default port of either 6667, 6668 or 6669 is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoRejoin* | Whether to auto re-join when being kicked | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channels* | Comma separated list of IRC channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.commandTimeout* | Delay in milliseconds before sending commands after the connection is established. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keys* | Comma separated list of keys for channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namesOnJoin* | Sends NAMES command to channel after joining it. onReply has to be true in order to process the result which will have the header value irc.num = '353'. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nickname* | The nickname used in chat. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistent* | Use persistent messages. | true | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.realname* | The IRC user's actual name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.colors* | Whether or not the server supports color codes. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onJoin* | Handle user join events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onKick* | Handle kick events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onMode* | Handle mode change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onNick* | Handle nickname change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onPart* | Handle user part events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onPrivmsg* | Handle private message events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onQuit* | Handle user quit events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onReply* | Whether or not to handle general responses to commands or informational messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.onTopic* | Handle topic change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nickPassword* | Your IRC server nickname password. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The IRC server password. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | Used for configuring security using SSL. Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. Note that this setting overrides the trustManager option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustManager* | The trust manager used to verify the SSL server's certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The IRC server user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-irc-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-irc-kafka-source-connector.adoc
new file mode 100644
index 0000000..9b49792
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-irc-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-irc-kafka-connector-source]]
+= camel-irc-kafka-connector source configuration
+
+When using camel-irc-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-irc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-irc source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.hostname* | Hostname for the IRC chat server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the IRC chat server. If no port is configured then a default port of either 6667, 6668 or 6669 is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoRejoin* | Whether to auto re-join when being kicked | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channels* | Comma separated list of IRC channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.commandTimeout* | Delay in milliseconds before sending commands after the connection is established. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keys* | Comma separated list of keys for channels. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namesOnJoin* | Sends NAMES command to channel after joining it. onReply has to be true in order to process the result which will have the header value irc.num = '353'. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nickname* | The nickname used in chat. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistent* | Use persistent messages. | true | ConfigDef.Importance.LOW
+| *camel.source.endpoint.realname* | The IRC user's actual name. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.colors* | Whether or not the server supports color codes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onJoin* | Handle user join events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onKick* | Handle kick events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onMode* | Handle mode change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onNick* | Handle nickname change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onPart* | Handle user part events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onPrivmsg* | Handle private message events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onQuit* | Handle user quit events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onReply* | Whether or not to handle general responses to commands or informational messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onTopic* | Handle topic change events. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nickPassword* | Your IRC server nickname password. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The IRC server password. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | Used for configuring security using SSL. Reference to a org.apache.camel.support.jsse.SSLContextParameters in the Registry. This reference overrides any configured SSLContextParameters at the component level. Note that this setting overrides the trustManager option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustManager* | The trust manager used to verify the SSL server's certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The IRC server user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.irc.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ironmq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ironmq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..242bc2e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ironmq-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-ironmq-kafka-connector-sink]]
+= camel-ironmq-kafka-connector sink configuration
+
+When using camel-ironmq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ironmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ironmq sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.queueName* | The name of the IronMQ queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.client* | Reference to a io.iron.ironmq.Client in the Registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ironMQCloud* | IronMq Cloud url. Urls for public clusters: \https://mq-aws-us-east-1-1.iron.io (US) and \https://mq-aws-eu-west-1-1.iron.io (EU) | "https://mq-aws-us-east-1-1.iron.io" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHeaders* | Should message headers be preserved when publishing messages. This will add the Camel headers to the Iron MQ message as a json payload with a header list, and a message body. Useful when Camel is both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.projectId* | IronMQ projectId | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.token* | IronMQ token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.visibilityDelay* | The item will not be available on the queue until this many seconds have passed. Default is 0 seconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ironmq-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ironmq-kafka-source-connector.adoc
new file mode 100644
index 0000000..4c129e6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ironmq-kafka-source-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-ironmq-kafka-connector-source]]
+= camel-ironmq-kafka-connector source configuration
+
+When using camel-ironmq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ironmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ironmq source connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.queueName* | The name of the IronMQ queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.client* | Reference to a io.iron.ironmq.Client in the Registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ironMQCloud* | IronMq Cloud url. Urls for public clusters: \https://mq-aws-us-east-1-1.iron.io (US) and \https://mq-aws-eu-west-1-1.iron.io (EU) | "https://mq-aws-us-east-1-1.iron.io" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preserveHeaders* | Should message headers be preserved when publishing messages. This will add the Camel headers to the Iron MQ message as a json payload with a header list, and a message body. Useful when Camel is both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.projectId* | IronMQ projectId | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.token* | IronMQ token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.batchDelete* | Should messages be deleted in one batch. This will limit the number of api requests since messages are deleted in one request, instead of one pr. exchange. If enabled care should be taken that the consumer is idempotent when processing exchanges. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | The number of concurrent consumers. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Number of messages to poll pr. call. Maximum is 100. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | After timeout (in seconds), item will be placed back onto the queue. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.wait* | Time in seconds to wait for a message to become available. This enables long polling. Default is 0 (does not wait), maximum is 30. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ironmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jbpm-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jbpm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7133e65
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jbpm-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-jbpm-kafka-connector-sink]]
+= camel-jbpm-kafka-connector sink configuration
+
+When using camel-jbpm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jbpm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jbpm sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionURL* | The URL to the jBPM server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.eventListenerType* | Sets the event listener type to attach to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentId* | attachId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentId* | contentId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deploymentId* | The id of the deployment | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.emitterSendItems* | Sets if event produced by emitter should be sent as single items or complete collection | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.event* | the data associated with this event when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventType* | the type of event to use when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.identifier* | identifier the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxNumber* | the maximum number of rules that should be fired | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.page* | The page to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageSize* | The page size to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.processId* | the id of the process that should be acted upon | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.processInstanceId* | the id of the process instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.targetUserId* | The targetUserId used when delegating a task | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.task* | The task instance to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.taskId* | the id of the task | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | A timeout value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userId* | userId to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | the value to assign to the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workItemId* | the id of the work item | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform | "startProcess" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entities* | The potentialOwners when nominateTask operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extraJaxbClasses* | To load additional classes when working with XML | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | the variables that should be set for various operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statuses* | The list of status to use when filtering tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Username for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jbpm-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jbpm-kafka-source-connector.adoc
new file mode 100644
index 0000000..90a7bd9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jbpm-kafka-source-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-jbpm-kafka-connector-source]]
+= camel-jbpm-kafka-connector source configuration
+
+When using camel-jbpm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jbpm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jbpm source connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionURL* | The URL to the jBPM server. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.eventListenerType* | Sets the event listener type to attach to | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentId* | attachId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentId* | contentId to use when retrieving attachments | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deploymentId* | The id of the deployment | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.emitterSendItems* | Sets if event produced by emitter should be sent as single items or complete collection | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.event* | the data associated with this event when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventType* | the type of event to use when signalEvent operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.identifier* | identifier the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxNumber* | the maximum number of rules that should be fired | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.page* | The page to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pageSize* | The page size to use when retrieving user tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processId* | the id of the process that should be acted upon | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processInstanceId* | the id of the process instance | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.targetUserId* | The targetUserId used when delegating a task | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.task* | The task instance to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskId* | the id of the task | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | A timeout value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | userId to use with task operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.value* | the value to assign to the global identifier | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workItemId* | the id of the work item | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.entities* | The potentialOwners when nominateTask operation is performed | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extraJaxbClasses* | To load additional classes when working with XML | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | the variables that should be set for various operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statuses* | The list of status to use when filtering tasks | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Username for authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jbpm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jcache-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jcache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6eb65be
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jcache-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-jcache-kafka-connector-sink]]
+= camel-jcache-kafka-connector sink configuration
+
+When using camel-jcache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcache sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheConfigurationProperties* | The Properties for the javax.cache.spi.CachingProvider to create the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.managementEnabled* | Whether management gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readThrough* | If read-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statisticsEnabled* | Whether statistics gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.storeByValue* | If cache should use store-by-value or store-by-reference semantics | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeThrough* | If write-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | To configure using a cache operation by default. If an operation in the message header, then the operation from the header takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheLoaderFactory* | The CacheLoader factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheWriterFactory* | The CacheWriter factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCacheIfNotExists* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expiryPolicyFactory* | The ExpiryPolicy factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lookupProviders* | Configure if a camel-cache should try to find implementations of jcache api in runtimes like OSGi. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration Properties* | Properties to configure jcache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration PropertiesRef* | References to an existing Properties or Map to lookup in the registry to use for configuring jcache. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jcache-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jcache-kafka-source-connector.adoc
new file mode 100644
index 0000000..24b04e2
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jcache-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-jcache-kafka-connector-source]]
+= camel-jcache-kafka-connector source configuration
+
+When using camel-jcache-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcache source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.cacheName* | The name of the cache | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheConfigurationProperties* | The Properties for the javax.cache.spi.CachingProvider to create the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.managementEnabled* | Whether management gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readThrough* | If read-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statisticsEnabled* | Whether statistics gathering is enabled | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.storeByValue* | If cache should use store-by-value or store-by-reference semantics | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeThrough* | If write-through caching should be used | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filteredEvents* | Events a consumer should filter (multiple events can be separated by comma). If using filteredEvents option, then eventFilters one will be ignored One of: [CREATED] [UPDATED] [REMOVED] [EXPIRED] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oldValueRequired* | if the old value is required for events | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | if the event listener should block the thread causing the event | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventFilters* | The CacheEntryEventFilter. If using eventFilters option, then filteredEvents one will be ignored | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLoaderFactory* | The CacheLoader factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheWriterFactory* | The CacheWriter factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createCacheIfNotExists* | Configure if a cache need to be created if it does exist or can't be pre-configured. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expiryPolicyFactory* | The ExpiryPolicy factory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lookupProviders* | Configure if a camel-cache should try to find implementations of jcache api in runtimes like OSGi. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration* | A Configuration for the Cache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration Properties* | Properties to configure jcache | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cacheConfiguration PropertiesRef* | References to an existing Properties or Map to lookup in the registry to use for configuring jcache. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.cachingProvider* | The fully qualified class name of the javax.cache.spi.CachingProvider | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.configurationUri* | An implementation specific URI for the CacheManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jclouds-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jclouds-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5d387ba
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jclouds-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jclouds-kafka-connector-sink]]
+= camel-jclouds-kafka-connector sink configuration
+
+When using camel-jclouds-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jclouds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jclouds sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.command* | What command to execute such as blobstore or compute. One of: [blobstore] [compute] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.providerId* | The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2). | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blobName* | The name of the blob. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.container* | The name of the blob container. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.group* | The group that will be assigned to the newly created node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hardwareId* | The hardware that will be used for creating a node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.imageId* | The imageId that will be used for creating a node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.locationId* | The location that will be used for creating a node. Values depend on the actual cloud provider. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeId* | The id of the node that will run the script or destroyed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeState* | To filter by node status to only select running nodes etc. One of: [PENDING] [TERMINATED] [SUSPENDED] [RUNNING] [ERROR] [UNRECOGNIZED] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Specifies the type of operation that will be performed to the blobstore. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | The user on the target node that will run the script. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.blobStores* | To use the given BlobStore which must be configured when using blobstore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.computeServices* | To use the given ComputeService which must be configured when use compute. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jclouds-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jclouds-kafka-source-connector.adoc
new file mode 100644
index 0000000..ce8a7c0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jclouds-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-jclouds-kafka-connector-source]]
+= camel-jclouds-kafka-connector source configuration
+
+When using camel-jclouds-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jclouds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jclouds source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.command* | What command to execute such as blobstore or compute. One of: [blobstore] [compute] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.providerId* | The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2). | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.container* | The name of the blob container. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.directory* | An optional directory name to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.blobStores* | To use the given BlobStore which must be configured when using blobstore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.computeServices* | To use the given ComputeService which must be configured when use compute. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jclouds.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jcr-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jcr-kafka-sink-connector.adoc
new file mode 100644
index 0000000..15988c9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jcr-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-jcr-kafka-connector-sink]]
+= camel-jcr-kafka-connector sink configuration
+
+When using camel-jcr-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcr sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Name of the javax.jcr.Repository to lookup from the Camel registry to be used. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.base* | Get the base node when accessing the repository | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deep* | When isDeep is true, events whose associated parent node is at absPath or within its subgraph are received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventTypes* | eventTypes (a combination of one or more event types encoded as a bit mask value such as javax.jcr.observation.Event.NODE_ADDED, javax.jcr.observation.Event.NODE_REMOVED, etc.). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nodeTypeNames* | When a comma separated nodeTypeName list string is set, only events whose associated parent node has one of the node types (or a subtype of one of the node types) in this list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noLocal* | If noLocal is true, then events generated by the session through which the listener was registered are ignored. Otherwise, they are not ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionLiveCheckInterval* | Interval in milliseconds to wait before each session live checking The default value is 60000 ms. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionLiveCheckIntervalOn Start* | Interval in milliseconds to wait before the first session live checking. The default value is 3000 ms. | 3000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uuids* | When a comma separated uuid list string is set, only events whose associated parent node has one of the identifiers in the comma separated uuid list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workspaceName* | The workspace to access. If it's not specified then the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jcr-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jcr-kafka-source-connector.adoc
new file mode 100644
index 0000000..0498489
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jcr-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jcr-kafka-connector-source]]
+= camel-jcr-kafka-connector source configuration
+
+When using camel-jcr-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jcr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jcr source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Name of the javax.jcr.Repository to lookup from the Camel registry to be used. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.base* | Get the base node when accessing the repository | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deep* | When isDeep is true, events whose associated parent node is at absPath or within its subgraph are received. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventTypes* | eventTypes (a combination of one or more event types encoded as a bit mask value such as javax.jcr.observation.Event.NODE_ADDED, javax.jcr.observation.Event.NODE_REMOVED, etc.). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nodeTypeNames* | When a comma separated nodeTypeName list string is set, only events whose associated parent node has one of the node types (or a subtype of one of the node types) in this list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noLocal* | If noLocal is true, then events generated by the session through which the listener was registered are ignored. Otherwise, they are not ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionLiveCheckInterval* | Interval in milliseconds to wait before each session live checking The default value is 60000 ms. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionLiveCheckIntervalOn Start* | Interval in milliseconds to wait before the first session live checking. The default value is 3000 ms. | 3000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.uuids* | When a comma separated uuid list string is set, only events whose associated parent node has one of the identifiers in the comma separated uuid list will be received. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workspaceName* | The workspace to access. If it's not specified then the default one will be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jcr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jdbc-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jdbc-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8aa00b7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jdbc-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jdbc-kafka-connector-sink]]
+= camel-jdbc-kafka-connector sink configuration
+
+When using camel-jdbc-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jdbc-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jdbc sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.dataSourceName* | Name of DataSource to lookup in the Registry. If the name is dataSource or default, then Camel will attempt to lookup a default DataSource from the registry, meaning if there is a only one instance of DataSource found, then this DataSource will be used. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne or SelectList. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Determines the output the producer should use. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Optional parameters to the java.sql.Statement. For example to set maxRows, fetchSize etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readSize* | The default maximum number of rows that can be read by a polling query. The default value is 0. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resetAutoCommit* | Camel will set the autoCommit on the JDBC connection to be false, commit the change after executed the statement and reset the autoCommit flag of the connection at the end, if the resetAutoCommit is true. If the JDBC connection doesn't support to reset the autoCommit flag, you can set the resetAutoCommit flag to be false, and Camel will not try to reset the autoCommit flag. When used with XA transactions you most likely need to set it to false so that the transaction manager is in charge of committing this tx. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Whether transactions are in use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useGetBytesForBlob* | To read BLOB columns as bytes instead of string data. This may be needed for certain databases such as Oracle where you must read BLOB columns as bytes. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useHeadersAsParameters* | Set this option to true to use the prepareStatementStrategy with named parameters. This allows to define queries with named placeholders, and use headers with the dynamic values for the query placeholders. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useJDBC4ColumnNameAndLabel Semantics* | Sets whether to use JDBC 4 or JDBC 3.0 or older semantic when retrieving column name. JDBC 4.0 uses columnLabel to get the column name where as JDBC 3.0 uses both columnName or columnLabel. Unfortunately JDBC drivers behave differently so you can use this option to work out issues around your JDBC driver if you get problem using this component This option is default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.beanRowMapper* | To use a custom org.apache.camel.component.jdbc.BeanRowMapper when using outputClass. The default implementation will lower case the row names and skip underscores, and dashes. For example CUST_ID is mapped as custId. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatementStrategy* | Allows the plugin to use a custom org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jdbc.dataSource* | To use the DataSource instance instead of looking up the data source by name from the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jdbc.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jdbc.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jetty-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jetty-kafka-source-connector.adoc
new file mode 100644
index 0000000..8c2275f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jetty-kafka-source-connector.adoc
@@ -0,0 +1,93 @@
+// kafka-connector options: START
+[[camel-jetty-kafka-connector-source]]
+= camel-jetty-kafka-connector source configuration
+
+When using camel-jetty-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jetty-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jetty source connector supports 67 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpUri* | The url of the HTTP endpoint to call. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.async* | Configure the consumer to work in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.continuationTimeout* | Allows to set a timeout in millis when using Jetty as consumer (server). By default Jetty uses 30000. You can use a value of = 0 to never expire. If a timeout occurs then the request will be expired and Jetty will return back a http error 503 to the client. This option is only in use when using Jetty with the Asynchronous Routing Engine. | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableCORS* | If the option is true, Jetty server will setup the CrossOriginFilter which supports the CORS out of box. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableMultipartFilter* | Whether org.apache.camel.component.jetty.MultiPartFilter is enabled or not. You should set this value to false when bridging endpoints, to ensure multipart requests is proxied/bridged as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.responseBufferSize* | To use a custom buffer size on the javax.servlet.ServletResponse. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendDateHeader* | If the option is true, jetty server will send the date header to the client which sends the request. NOTE please make sure there is no any other camel-jetty endpoint is share the same port, otherwise this option may not work as expected. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendServerVersion* | If the option is true, jetty will send the server header with the jetty version information to the client which sends the request. NOTE please make sure there is no any other camel-jetty endpoint is share the same port, otherwise this option may not work as expected. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionSupport* | Specifies whether to enable the session manager on the server side of Jetty. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useContinuation* | Whether or not to use Jetty continuations for the Jetty Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckContentAvailable* | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterInitParameters* | Configuration of the filter init parameters. These parameters will be applied to the filter list before starting the jetty server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filters* | Allows using a custom filters which is putted into a list and can be find in the Registry. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handlers* | Specifies a comma-delimited set of Handler instances to lookup in your Registry. These handlers are added to the Jetty servlet context (for example, to add security). Important: You can not use different handlers with different Jetty endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipartFilter* | Allows using a custom multipart filter. Note: setting multipartFilterRef forces the value of enableMultipartFilter to true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.continuationTimeout* | Allows to set a timeout in millis when using Jetty as consumer (server). By default Jetty uses 30000. You can use a value of = 0 to never expire. If a timeout occurs then the request will be expired and Jetty will return back a http error 503 to the client. This option is only in use when using Jetty with the Asynchronous Routing Engine. | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.maxThreads* | To set a value for maximum number of threads in server thread pool. Notice that both a min and max size must be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.minThreads* | To set a value for minimum number of threads in server thread pool. Notice that both a min and max size must be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.requestBufferSize* | Allows to configure a custom value of the request buffer size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.requestHeaderSize* | Allows to configure a custom value of the request header size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.responseBufferSize* | Allows to configure a custom value of the response buffer size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.responseHeaderSize* | Allows to configure a custom value of the response header size on the Jetty connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sendServerVersion* | If the option is true, jetty will send the server header with the jetty version information to the client which sends the request. NOTE please make sure there is no any other camel-jetty endpoint is share the same port, otherwise this option may not work as expected. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.useContinuation* | Whether or not to use Jetty continuations for the Jetty Server. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.useXForwardedForHeader* | To use the X-Forwarded-For header in HttpServletRequest.getRemoteAddr. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.threadPool* | To use a custom thread pool for the server. This option should only be used in special circumstances. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.errorHandler* | This option is used to set the ErrorHandler that Jetty server uses. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.httpBinding* | Not to be used - use JettyHttpBinding instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.httpConfiguration* | Jetty component does not use HttpConfiguration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.jettyHttpBinding* | To use a custom org.apache.camel.component.jetty.JettyHttpBinding, which are used to customize how a response should be written for the producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.mbContainer* | To use a existing configured org.eclipse.jetty.jmx.MBeanContainer if JMX is enabled that Jetty uses for registering mbeans. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.proxyHost* | To use a http proxy to configure the hostname. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.proxyPort* | To use a http proxy to configure the port number. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.keystore* | Specifies the location of the Java keystore file, which contains the Jetty server's own X.509 certificate in a key entry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.socketConnectorProperties* | A map which contains general HTTP connector properties. Uses the same principle as sslSocketConnectorProperties. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.socketConnectors* | A map which contains per port number specific HTTP connectors. Uses the same principle as sslSocketConnectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslKeyPassword* | The key password, which is used to access the certificate's key entry in the keystore (this is the same password that is supplied to the keystore command's -keypass option). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslPassword* | The ssl password, which is required to access the keystore file (this is the same password that is supplied to the keystore command's -storepass option). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslSocketConnectorProperties* | A map which contains general SSL connector properties. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.sslSocketConnectors* | A map which contains per port number specific SSL connectors. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jetty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jgroups-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jgroups-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3fb0de1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jgroups-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-jgroups-kafka-connector-sink]]
+= camel-jgroups-kafka-connector sink configuration
+
+When using camel-jgroups-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.clusterName* | The name of the JGroups cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channel* | Channel to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jgroups-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jgroups-kafka-source-connector.adoc
new file mode 100644
index 0000000..80e0df4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jgroups-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-jgroups-kafka-connector-source]]
+= camel-jgroups-kafka-connector source configuration
+
+When using camel-jgroups-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.clusterName* | The name of the JGroups cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableViewMessages* | If set to true, the consumer endpoint will receive org.jgroups.View messages as well (not only org.jgroups.Message instances). By default only regular messages are consumed by the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channel* | Channel to use | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.channelProperties* | Specifies configuration properties of the JChannel used by the endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.enableViewMessages* | If set to true, the consumer endpoint will receive org.jgroups.View messages as well (not only org.jgroups.Message instances). By default only regular messages are consumed by the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jgroups-raft-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jgroups-raft-kafka-sink-connector.adoc
new file mode 100644
index 0000000..403c63a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jgroups-raft-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-jgroups-raft-kafka-connector-sink]]
+= camel-jgroups-raft-kafka-connector sink configuration
+
+When using camel-jgroups-raft-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-raft-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups-raft sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.clusterName* | The name of the JGroupsraft cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.channelProperties* | Specifies configuration properties of the RaftHandle JChannel used by the endpoint (ignored if raftHandle ref is provided). | "raft.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftHandle* | RaftHandle to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftId* | Unique raftId to use. | null | ConfigDef.Importance.HIGH
+| *camel.component.jgroups-raft.stateMachine* | StateMachine to use. | "NopStateMachine" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jgroups-raft-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jgroups-raft-kafka-source-connector.adoc
new file mode 100644
index 0000000..11f271b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jgroups-raft-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-jgroups-raft-kafka-connector-source]]
+= camel-jgroups-raft-kafka-connector source configuration
+
+When using camel-jgroups-raft-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jgroups-raft-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jgroups-raft source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.clusterName* | The name of the JGroupsraft cluster the component should connect to. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableRoleChangeEvents* | If set to true, the consumer endpoint will receive roleChange event as well (not just connecting and/or using the state machine). By default it is set to false. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.channelProperties* | Specifies configuration properties of the RaftHandle JChannel used by the endpoint (ignored if raftHandle ref is provided). | "raft.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftHandle* | RaftHandle to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.raftId* | Unique raftId to use. | null | ConfigDef.Importance.HIGH
+| *camel.component.jgroups-raft.stateMachine* | StateMachine to use. | "NopStateMachine" | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jgroups-raft.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jing-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jing-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bf7f8c9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jing-kafka-sink-connector.adoc
@@ -0,0 +1,33 @@
+// kafka-connector options: START
+[[camel-jing-kafka-connector-sink]]
+= camel-jing-kafka-connector sink configuration
+
+When using camel-jing-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jing-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jing sink connector supports 7 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | URL to a local resource on the classpath or a full URL to a remote resource or resource on the file system which contains the schema to validate against. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.compactSyntax* | Whether to validate using RelaxNG compact syntax or not. By default this is false for using RelaxNG XML Syntax (rng) And true is for using RelaxNG Compact Syntax (rnc) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jing.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jing.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jira-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jira-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7992b7e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jira-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-jira-kafka-connector-sink]]
+= camel-jira-kafka-connector sink configuration
+
+When using camel-jira-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jira-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jira sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | Operation to perform. Consumers: NewIssues, NewComments. Producers: AddIssue, AttachFile, DeleteIssue, TransitionIssue, UpdateIssue, Watchers. See this class javadoc description for more information. One of: [ADDCOMMENT] [ADDISSUE] [ATTACH] [DELETEISSUE] [NEWISSUES] [NEWCOMMENTS] [UPDATEISSUE] [TRANSITIONISSUE] [WATCHERS] [ADDISSUELINK] [ADDWORKLOG] [FETCHISSUE] [FETCHCOMMENTS] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.delay* | Time in milliseconds to elapse for the next poll. | "6000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jiraUrl* | The Jira server url, example: \http://my_jira.com:8081 | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | (OAuth only) The access token generated by the Jira server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | (OAuth only) The consumer key from Jira settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | (Basic authentication only) The password to authenticate to the Jira server. Use only if username basic authentication is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | (OAuth only) The private key generated by the client to encrypt the conversation to the server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | (Basic authentication only) The username to authenticate to the Jira server. Use only if OAuth is not enabled on the Jira server. Do not set the username and OAuth token parameter, if they are both set, the username basic authentication takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.verificationCode* | (OAuth only) The verification code from Jira generated in the first step of the authorization proccess. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.configuration* | To use a shared base jira configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jira-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jira-kafka-source-connector.adoc
new file mode 100644
index 0000000..040bd57
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jira-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-jira-kafka-connector-source]]
+= camel-jira-kafka-connector source configuration
+
+When using camel-jira-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jira-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jira source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Operation to perform. Consumers: NewIssues, NewComments. Producers: AddIssue, AttachFile, DeleteIssue, TransitionIssue, UpdateIssue, Watchers. See this class javadoc description for more information. One of: [ADDCOMMENT] [ADDISSUE] [ATTACH] [DELETEISSUE] [NEWISSUES] [NEWCOMMENTS] [UPDATEISSUE] [TRANSITIONISSUE] [WATCHERS] [ADDISSUELINK] [ADDWORKLOG] [FETCHISSUE] [FETCHCOMMENTS] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.delay* | Time in milliseconds to elapse for the next poll. | "6000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jiraUrl* | The Jira server url, example: \http://my_jira.com:8081 | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jql* | JQL is the query language from JIRA which allows you to retrieve the data you want. For example jql=project=MyProject Where MyProject is the product key in Jira. It is important to use the RAW() and set the JQL inside it to prevent camel parsing it, example: RAW(project in (MYP, COM) AND resolution = Unresolved) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | Max number of issues to search for | "50" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | (OAuth only) The access token generated by the Jira server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | (OAuth only) The consumer key from Jira settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | (Basic authentication only) The password to authenticate to the Jira server. Use only if username basic authentication is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | (OAuth only) The private key generated by the client to encrypt the conversation to the server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | (Basic authentication only) The username to authenticate to the Jira server. Use only if OAuth is not enabled on the Jira server. Do not set the username and OAuth token parameter, if they are both set, the username basic authentication takes precedence. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.verificationCode* | (OAuth only) The verification code from Jira generated in the first step of the authorization proccess. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jira.configuration* | To use a shared base jira configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jms-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5d19230
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jms-kafka-sink-connector.adoc
@@ -0,0 +1,158 @@
+// kafka-connector options: START
+[[camel-jms-kafka-connector-sink]]
+= camel-jms-kafka-connector sink configuration
+
+When using camel-jms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jms sink connector supports 132 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryDelay* | Sets delivery delay to use for send calls for JMS. This option requires JMS 2.0 compliant broker. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.formatDateHeadersToIso8601* | Sets whether JMS date properties should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOnTimeoutMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToOverride* | Provides an explicit ReplyTo destination in the JMS message, which overrides the setting of replyTo. It is useful if you want to forward the message to a remote Queue and receive the reply message from the ReplyTo destination. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationProperty* | When using InOut exchange pattern use this JMS property instead of JMSCorrelationID JMS property to correlate messages. If set messages will be correlated solely on the value of this property JMSCorrelationID property will be ignored and not set by Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableTimeToLive* | Use this option to force disabling time to live. For example when you do request/reply over JMS, then Camel will by default use the requestTimeout value as time to live on the message being sent. The problem is that the sender and receiver systems have to have their clocks synchronized, so they are in sync. This is not always so easy to archive. So you can use disableTimeToLive=true to not set a time to live value on the sent message. Then the message will not expire on the receiver system. See below in section About time to live for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyToDestinationSelectorName* | Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others when using a shared queue (that is, if you are not using a temporary reply queue). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.deliveryMode* | Specifies the delivery mode to be used. Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT = 2. One of: [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.deliveryPersistent* | Specifies whether persistent delivery is used by default. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.explicitQosEnabled* | Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages. This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint. This contrasts with the preserveMessageQos option, which operates at message granularity, reading QoS properties exclusively from the Camel In message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.formatDateHeadersToIso8601* | Sets whether date headers should be formatted according to the ISO 8601 standard. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.preserveMessageQos* | Set to true, if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint. The following three headers are considered JMSPriority, JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them. If not provided, Camel will fall back to use the values from the endpoint instead. So, when using this option, the headers override the values from the endpoint. The explicitQosEnabled option, by contrast, will only use options set on the endpoint, and not values from the message header. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.priority* | Values greater than 1 specify the message priority when sending (where 0 is the lowest priority and 9 is the highest). The explicitQosEnabled option must also be enabled in order for this option to have any effect. One of: [1] [2] [3] [4] [5] [6] [7] [8] [9] | 4 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyOnTimeoutToMaxConcurrent Consumers* | Specifies the maximum number of concurrent consumers for continue routing when timeout occurred when using request/reply over JMS. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToConcurrentConsumers* | Specifies the default number of concurrent consumers when doing request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToMaxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when using request/reply over JMS. See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToType* | Allows for explicitly specifying which kind of strategy to use for replyTo queues when doing request/reply over JMS. Possible values are: Temporary, Shared, or Exclusive. By default Camel will use temporary queues. However if replyTo has been configured, then Shared is used by default. This option allows you to use exclusive queues instead of shared ones. See Camel JMS documentation for more details, and especially the notes about the implications if running in a clustered environment, and the fact that Shared reply queues has lower performance than its alternatives Temporary and Exclusive. One of: [Temporary] [Shared] [Exclusive] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.requestTimeout* | The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds). The default is 20 seconds. You can include the header CamelJmsRequestTimeout to override this endpoint configured timeout value, and thus have per message individual timeout values. See also the requestTimeoutCheckerInterval option. | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.timeToLive* | When sending messages, specifies the time-to-live of the message (in milliseconds). | -1L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAdditionalHeaders* | This option is used to allow additional headers which may have values that are invalid according to JMS specification. For example some message systems such as WMQ do this with header names using prefix JMS_IBM_MQMD_ containing values with byte array or other invalid types. You can specify multiple header names separated by comma, and use as suffix for wildcard matching. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.alwaysCopyMessage* | If true, Camel will always make a JMS message copy of the message when it is passed to the producer for sending. Copying the message is needed in some situations, such as when a replyToDestinationSelectorName is set (incidentally, Camel will set the alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.correlationProperty* | Use this JMS property to correlate messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID property. This allows you to exchange messages with systems that do not correlate messages using JMSCorrelationID JMS property. If used JMSCorrelationID will not be used or set by Camel. The value of here named property will be generated if not supplied in the header of the message under the same name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.forceSendOriginalMessage* | When using mapJmsMessage=false Camel will create a new JMS message to send to a new JMS destination if you touch the headers (get or set) during the route. Set this option to true to force Camel to send the original JMS message that was received. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.includeSentJMSMessageID* | Only applicable when sending to JMS destination using InOnly (eg fire and forget). Enabling this option will enrich the Camel Exchange with the actual JMSMessageID that was used by the JMS client when the message was sent to the JMS destination. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.replyToCacheLevelName* | Sets the cache level by name for the reply consumer when doing request/reply over JMS. This option only applies when using fixed reply queues (not temporary). Camel will by default use: CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary queues then CACHE_NONE is not allowed, and you must use a higher value such as CACHE_CONSUMER or CACHE_SESSION. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.streamMessageTypeEnabled* | Sets whether StreamMessage type is enabled or not. Message payloads of streaming kind such as files, InputStream, etc will either by sent as BytesMessage or StreamMessage. This option controls which kind will be used. By default BytesMessage is used which enforces the entire message payload to be read into memory. By enabling this option the message payload is read into memory in chunks and each chunk is then written to the StreamMessage until no more data. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jms-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jms-kafka-source-connector.adoc
new file mode 100644
index 0000000..5f9cc31
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jms-kafka-source-connector.adoc
@@ -0,0 +1,159 @@
+// kafka-connector options: START
+[[camel-jms-kafka-connector-source]]
+= camel-jms-kafka-connector source configuration
+
+When using camel-jms-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jms source connector supports 133 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] [temp-queue] [temp-topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | Name of the queue or topic to use as destination | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableReplyTo* | Specifies whether Camel ignores the JMSReplyTo header in messages. If true, Camel does not send a reply back to the destination specified in the JMSReplyTo header. You can use this option if you want Camel to consume from a route and you do not want Camel to automatically send back a reply message because another component in your code handles the reply message. You can also use this option if you want to use Camel as a proxy between different message brokers and you want to route message from one system to another. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsMessageType* | Allows you to force the use of a specific javax.jms.Message implementation for sending JMS messages. Possible values are: Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it. One of: [Bytes] [Map] [Object] [Stream] [Text] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyTo* | Provides an explicit ReplyTo destination, which overrides any incoming value of Message.getJMSReplyTo(). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDeliveryPersistent* | Specifies whether to use persistent delivery by default for replies. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.selector* | Sets the JMS selector to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | The consumer type to use, which can be one of: Simple, Default, or Custom. The consumer type determines which Spring JMS listener to use. Default will use org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will use org.springframework.jms.listener.SimpleMessageListenerContainer. When Custom is specified, the MessageListenerContainerFactory defined by the messageListenerContainerFactory option will determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use. One of: [Simple] [Default] [Custom] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerLoadingOfProperties* | Enables eager loading of JMS properties and payload as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerPoisonBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToSameDestination Allowed* | Whether a JMS consumer is allowed to send a reply message to the same destination that the consumer is using to consume from. This prevents an endless loop by consuming and sending back the same message to itself. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Controls whether or not to include serialized headers. Applies only when transferExchange is true. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. One of: [default] [passthrough] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageListenerContainer Factory* | Registry ID of the MessageListenerContainerFactory used to determine what org.springframework.jms.listener.AbstractMessageListenerContainer to use to consume messages. Setting this will automatically set consumerType to Custom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.waitForProvisionCorrelation ToBeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.clientId* | Sets the JMS client ID to use. Note that this value, if specified, must be unique and can only be used by a single JMS connection instance. It is typically only required for durable topic subscriptions. If using Apache ActiveMQ you may prefer to use Virtual Topics instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.connectionFactory* | The connection factory to be use. A connection factory must be configured either on the component or endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.durableSubscriptionName* | The durable subscriber name for specifying durable topic subscriptions. The clientId option must be configured as well. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.testConnectionOnStartup* | Specifies whether to test the connection on startup. This ensures that when Camel starts that all the JMS consumers have a valid connection to the JMS broker. If a connection cannot be granted then Camel throws an exception on startup. This ensures that Camel is not started with failed connections. The JMS producers is tested as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.acknowledgementMode* | The JMS acknowledgement mode defined as an Integer. Allows you to set vendor-specific extensions to the acknowledgment mode. For the regular modes, it is preferable to use the acknowledgementModeName instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.acknowledgementModeName* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncConsumer* | Whether the JmsConsumer processes the Exchange asynchronously. If enabled then the JmsConsumer may pickup the next message from the JMS queue, while the previous message is being processed asynchronously (by the Asynchronous Routing Engine). This means that messages may be processed not 100% strictly in order. If disabled (as default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue. Note if transacted has been enabled, then asyncConsumer=true does not run asynchronously, as transaction must be executed synchronously (Camel 3.0 may support async transactions). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.autoStartup* | Specifies whether the consumer container should auto-startup. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.cacheLevel* | Sets the cache level by ID for the underlying JMS resources. See cacheLevelName option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.cacheLevelName* | Sets the cache level by name for the underlying JMS resources. Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See the Spring documentation and Transactions Cache Levels for more information. One of: [CACHE_AUTO] [CACHE_CONNECTION] [CACHE_CONSUMER] [CACHE_NONE] [CACHE_SESSION] | "CACHE_AUTO" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.concurrentConsumers* | Specifies the default number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.maxConcurrentConsumers* | Specifies the maximum number of concurrent consumers when consuming from JMS (not for request/reply over JMS). See also the maxMessagesPerTask option to control dynamic scaling up/down of threads. When doing request/reply over JMS then the option replyToMaxConcurrentConsumers is used to control number of concurrent consumers on the reply message listener. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.subscriptionDurable* | Set whether to make the subscription durable. The durable subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a durable subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.subscriptionName* | Set the name of a subscription to create. To be applied in case of a topic (pub-sub domain) with a shared or durable subscription. The subscription name needs to be unique within this client's JMS client id. Default is the class name of the specified message listener. Note: Only 1 concurrent consumer (which is the default of this message listener container) is allowed for each subscription, except for a shared subscription (which requires JMS 2.0). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.subscriptionShared* | Set whether to make the subscription shared. The shared subscription name to be used can be specified through the subscriptionName property. Default is false. Set this to true to register a shared subscription, typically in combination with a subscriptionName value (unless your message listener class name is good enough as subscription name). Note that shared subscriptions may also be durable, so this flag can (and often will) be combined with subscriptionDurable as well. Only makes sense when listening to a topic (pub-sub domain), therefore this method switches the pubSubDomain flag as well. Requires a JMS 2.0 compatible message broker. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.acceptMessagesWhileStopping* | Specifies whether the consumer accept messages while it is stopping. You may consider enabling this option, if you start and stop JMS routes at runtime, while there are still messages enqueued on the queue. If this option is false, and you stop the JMS route, then messages may be rejected, and the JMS broker would have to attempt redeliveries, which yet again may be rejected, and eventually the message may be moved at a dead letter queue on the JMS broker. To avoid this its recommended to enable this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowReplyManagerQuickStop* | Whether the DefaultMessageListenerContainer used in the reply managers for request-reply messaging allow the DefaultMessageListenerContainer.runningAllowed flag to quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and org.apache.camel.CamelContext is currently being stopped. This quick stop ability is enabled by default in the regular JMS consumers but to enable for reply managers you must enable this flag. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.defaultTaskExecutorType* | Specifies what default TaskExecutor type to use in the DefaultMessageListenerContainer, for both consumer endpoints and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not set, it defaults to the previous behaviour, which uses a cached thread pool for consumer endpoints and SimpleAsync for reply consumers. The use of ThreadPool is recommended to reduce thread trash in elastic configurations with dynamically increasing and decreasing concurrent consumers. One of: [ThreadPool] [SimpleAsync] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.eagerLoadingOfProperties* | Enables eager loading of JMS properties as soon as a message is loaded which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. See also the option eagerLoadingOfBody. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.eagerPoisonBody* | If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) is poison (cannot be read/mapped), then set this text as the message body instead so the message can be processed (the cause of the poison are already stored as exception on the Exchange). This can be turned off by setting eagerPoisonBody=false. See also the option eagerLoadingOfProperties. | "Poison JMS message due to ${exception.message}" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.exposeListenerSession* | Specifies whether the listener session should be exposed when consuming messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.taskExecutor* | Allows you to specify a custom task executor for consuming messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredConnection Factory* | Whether to auto-discover ConnectionFactory from the registry, if no connection factory has been configured. If only one instance of ConnectionFactory is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.allowAutoWiredDestination Resolver* | Whether to auto-discover DestinationResolver from the registry, if no destination resolver has been configured. If only one instance of DestinationResolver is found then it will be used. This is enabled by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStartListener* | Whether to startup the JmsConsumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.asyncStopListener* | Whether to stop the JmsConsumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.configuration* | To use a shared JMS configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.destinationResolver* | A pluggable org.springframework.jms.support.destination.DestinationResolver that allows you to use your own resolver (for example, to lookup the real destination in a JNDI registry). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandler* | Specifies a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message. By default these exceptions will be logged at the WARN level, if no errorHandler has been configured. You can configure logging level and whether stack traces should be logged using errorHandlerLoggingLevel and errorHandlerLogStackTrace options. This makes it much easier to configure, than having to code a custom errorHandler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleConsumerLimit* | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.idleTaskExecutionLimit* | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.jmsOperations* | Allows you to use your own implementation of the org.springframework.jms.core.JmsOperations interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.maxMessagesPerTask* | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageConverter* | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageIdEnabled* | When sending, specifies whether message IDs should be added. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the message ID set to null; if the provider ignores the hint, the message ID must be set to its normal unique value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.messageTimestampEnabled* | Specifies whether timestamps should be enabled by default on sending messages. This is just an hint to the JMS broker. If the JMS provider accepts this hint, these messages must have the timestamp set to zero; if the provider ignores the hint the timestamp must be set to its normal value. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.pubSubNoLocal* | Specifies whether to inhibit the delivery of messages published by its own connection. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.queueBrowseStrategy* | To use a custom QueueBrowseStrategy when browsing queues | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.receiveTimeout* | The timeout for receiving messages (in milliseconds). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.requestTimeoutCheckerInterval* | Configures how often Camel should check for timed out Exchanges when doing request/reply over JMS. By default Camel checks once per second. But if you must react faster when a timeout occurs, then you can lower this interval, to check more frequently. The timeout is determined by the option requestTimeout. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferException* | If enabled and you are using Request Reply messaging (InOut) and an Exchange failed on the consumer side, then the caused Exception will be send back in response as a javax.jms.ObjectMessage. If the client is Camel, the returned Exception is rethrown. This allows you to use Camel JMS as a bridge in your routing - for example, using persistent queues to enable robust routing. Notice that if you also have transferExchange enabled, this option takes precedence. The caught exception is required to be serializable. The original Exception on the consumer side can be wrapped in an outer exception such as org.apache.camel.RuntimeCamelException when returned to the producer. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transferExchange* | You can transfer the exchange over the wire instead of just the body and headers. The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. You must enable this option on both the producer and consumer side, so Camel knows the payloads is an Exchange and not a regular payload. Use this with caution as the data is using Java Object serialization and requires the received to be able to deserialize the data at Class level, which forces a strong coupling between the producers and consumer having to use compatible Camel versions! | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.useMessageIDAsCorrelationID* | Specifies whether JMSMessageID should always be used as JMSCorrelationID for InOut messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedCounter* | Number of times to wait for provisional correlation id to be updated to the actual correlation id when doing request/reply over JMS and when the option useMessageIDAsCorrelationID is enabled. | 50 | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.waitForProvisionCorrelationTo BeUpdatedThreadSleepingTime* | Interval in millis to sleep each time while waiting for provisional correlation id to be updated. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.password* | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.username* | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.lazyCreateTransactionManager* | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionManager* | The Spring transaction manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionName* | The name of the transaction to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jms.transactionTimeout* | The timeout value of the transaction (in seconds), if using transacted mode. | -1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jmx-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jmx-kafka-source-connector.adoc
new file mode 100644
index 0000000..06f005e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jmx-kafka-source-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-jmx-kafka-connector-source]]
+= camel-jmx-kafka-connector source configuration
+
+When using camel-jmx-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jmx-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jmx source connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.serverURL* | Server url comes from the remaining endpoint. Use platform to connect to local JVM. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.format* | Format for the message body. Either xml or raw. If xml, the notification is serialized to xml. If raw, then the raw java object is set as the body. One of: [xml] [raw] | "xml" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.granularityPeriod* | The frequency to poll the bean to check the monitor (monitor types only). | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.monitorType* | The type of monitor to create. One of string, gauge, counter (monitor types only). One of: [counter] [gauge] [string] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectDomain* | The domain for the mbean you're connecting to | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.objectName* | The name key for the mbean you're connecting to. This value is mutually exclusive with the object properties that get passed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.observedAttribute* | The attribute to observe for the monitor bean or consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.executorService* | To use a custom shared thread pool for the consumers. By default each consume has their own thread-pool to process and route notifications. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handback* | Value to handback to the listener when a notification is received. This value will be put in the message header with the key jmx.handback | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notificationFilter* | Reference to a bean that implements the NotificationFilter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectProperties* | Properties for the object name. These values will be used if the objectName param is not set | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | The number of seconds to wait before attempting to retry establishment of the initial connection or attempt to reconnect a lost connection | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectOnConnectionFailure* | If true the consumer will attempt to reconnect to the JMX server when any connection failure occurs. The consumer will attempt to re-establish the JMX connection every 'x' seconds until the connection is made-- where 'x' is the configured reconnectionDelay | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | If true the consumer will throw an exception if unable to establish the JMX connection upon startup. If false, the consumer will attempt to establish the JMX connection every 'x' seconds until the connection is made -- where 'x' is the configured reconnectionDelay | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyDiffer* | If true, will fire a notification when the string attribute differs from the string to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyMatch* | If true, will fire a notification when the string attribute matches the string to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stringToCompare* | Value for attribute to compare (string monitor or consumer). By default the consumer will notify match if observed attribute and string to compare has been configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initThreshold* | Initial threshold for the monitor. The value must exceed this before notifications are fired (counter monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.modulus* | The value at which the counter is reset to zero (counter monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offset* | The amount to increment the threshold after it's been exceeded (counter monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.differenceMode* | If true, then the value reported in the notification is the difference from the threshold as opposed to the value itself (counter and gauge monitor only). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyHigh* | If true, the gauge will fire a notification when the high threshold is exceeded (gauge monitor only). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyLow* | If true, the gauge will fire a notification when the low threshold is exceeded (gauge monitor only). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.thresholdHigh* | Value for the gauge's high threshold (gauge monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.thresholdLow* | Value for the gauge's low threshold (gauge monitor only). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Credentials for making a remote connection | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | Credentials for making a remote connection | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jmx.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jmx.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jolt-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jolt-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1ab1f01
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jolt-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-jolt-kafka-connector-sink]]
+= camel-jolt-kafka-connector sink configuration
+
+When using camel-jolt-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jolt-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jolt sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputType* | Specifies if the input is hydrated JSON or a JSON String. One of: [Hydrated] [JsonString] | "Hydrated" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Specifies if the output should be hydrated JSON or a JSON String. One of: [Hydrated] [JsonString] | "Hydrated" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformDsl* | Specifies the Transform DSL of the endpoint resource. If none is specified Chainr will be used. One of: [Chainr] [Shiftr] [Defaultr] [Removr] [Sortr] | "Chainr" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jolt.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jolt.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jolt.transform* | Explicitly sets the Transform to use. If not set a Transform specified by the transformDsl will be created | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jooq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jooq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..50a1439
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jooq-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-jooq-kafka-connector-sink]]
+= camel-jooq-kafka-connector sink configuration
+
+When using camel-jooq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jooq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jooq sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.entityType* | JOOQ entity class | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseConfiguration* | To use a specific database configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Type of operation to execute on query One of: [EXECUTE] [FETCH] [NONE] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.query* | To execute plain SQL query | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.configuration* | Component configuration (database connection, database entity type, etc.) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jooq-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jooq-kafka-source-connector.adoc
new file mode 100644
index 0000000..23191ca
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jooq-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-jooq-kafka-connector-source]]
+= camel-jooq-kafka-connector source configuration
+
+When using camel-jooq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jooq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jooq source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.entityType* | JOOQ entity class | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.databaseConfiguration* | To use a specific database configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeDelete* | Delete entity after it is consumed | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.configuration* | Component configuration (database connection, database entity type, etc.) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jooq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jpa-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jpa-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7171d95
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jpa-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-jpa-kafka-connector-sink]]
+= camel-jpa-kafka-connector sink configuration
+
+When using camel-jpa-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jpa sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.entityType* | Entity class name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumResults* | Set the maximum number of results to retrieve on the Query. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedQuery* | To use a named query. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nativeQuery* | To use a custom native query. You may want to use the option resultClass also when using native queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistenceUnit* | The JPA persistence unit used by default. | "camel" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.query* | To use a custom query. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultClass* | Defines the type of the returned payload (we will call entityManager.createNativeQuery(nativeQuery, resultClass) instead of entityManager.createNativeQuery(nativeQuery)). Without this option, we will return an object array. Only has an affect when using in conjunction with native query when consuming data. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.findEntity* | If enabled then the producer will find a single entity by using the message body as key and entityType as the class type. This can be used instead of a query to find a single entity. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushOnSend* | Flushes the EntityManager after the entity bean has been persisted. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.remove* | Indicates to use entityManager.remove(entity). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useExecuteUpdate* | To configure whether to use executeUpdate() when producer executes a query. When you use INSERT, UPDATE or DELETE statement as a named query, you need to specify this option to 'true'. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePersist* | Indicates to use entityManager.persist(entity) instead of entityManager.merge(entity). Note: entityManager.persist(entity) doesn't work for detached entities (where the EntityManager has to execute an UPDATE instead of an INSERT query)! | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePassedInEntityManager* | If set to true, then Camel will use the EntityManager from the header JpaConstants.ENTITY_MANAGER instead of the configured entity manager on the component/endpoint. This allows end users to control which entity manager will be in use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityManagerProperties* | Additional properties for the entity manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.entityManagerFactory* | To use the EntityManagerFactory. This is strongly recommended to configure. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.transactionManager* | To use the PlatformTransactionManager for managing transactions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jpa-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jpa-kafka-source-connector.adoc
new file mode 100644
index 0000000..85126b1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jpa-kafka-source-connector.adoc
@@ -0,0 +1,72 @@
+// kafka-connector options: START
+[[camel-jpa-kafka-connector-source]]
+= camel-jpa-kafka-connector source configuration
+
+When using camel-jpa-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jpa source connector supports 46 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.entityType* | Entity class name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumResults* | Set the maximum number of results to retrieve on the Query. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namedQuery* | To use a named query. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nativeQuery* | To use a custom native query. You may want to use the option resultClass also when using native queries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistenceUnit* | The JPA persistence unit used by default. | "camel" | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.query* | To use a custom query. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultClass* | Defines the type of the returned payload (we will call entityManager.createNativeQuery(nativeQuery, resultClass) instead of entityManager.createNativeQuery(nativeQuery)). Without this option, we will return an object array. Only has an affect when using in conjunction with native query when consuming data. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeDelete* | If true, the entity is deleted after it is consumed; if false, the entity is not deleted. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumeLockEntity* | Specifies whether or not to set an exclusive lock on each entity bean while processing the results from polling. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteHandler* | To use a custom DeleteHandler to delete the row after the consumer is done processing the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lockModeType* | To configure the lock mode on the consumer. One of: [READ] [WRITE] [OPTIMISTIC] [OPTIMISTIC_FORCE_INCREMENT] [PESSIMISTIC_READ] [PESSIMISTIC_WRITE] [PESSIMISTIC_FORCE_INCREMENT] [NONE] | "PESSIMISTIC_WRITE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | An integer value to define the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to avoid polling many thousands of messages when starting up the server. Set a value of 0 or negative to disable. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preDeleteHandler* | To use a custom Pre-DeleteHandler to delete the row after the consumer has read the entity. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipLockedEntity* | To configure whether to use NOWAIT on lock and silently skip the entity. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Whether to run the consumer in transacted mode, by which all messages will either commit or rollback, when the entire batch has been processed. The default behavior (false) is to commit all the previously successfully processed messages, and only rollback the last failed message. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | This key/value mapping is used for building the query parameters. It is expected to be of the generic type java.util.Map where the keys are the named parameters of a given JPA query and the values are their corresponding effective values you want to select for. When it's used for producer, Simple expression can be used as a parameter value. It allows you to retrieve parameter values from the message body, header and etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.entityManagerProperties* | Additional properties for the entity manager to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.entityManagerFactory* | To use the EntityManagerFactory. This is strongly recommended to configure. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.joinTransaction* | The camel-jpa component will join transaction by default. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the JpaComponent, instead of having to set it on all endpoints. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.sharedEntityManager* | Whether to use Spring's SharedEntityManager for the consumer/producer. Note in most cases joinTransaction should be set to false as this is not an EXTENDED EntityManager. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.transactionManager* | To use the PlatformTransactionManager for managing transactions. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jpa.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jslt-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jslt-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8850cf7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jslt-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-jslt-kafka-connector-sink]]
+= camel-jslt-kafka-connector sink configuration
+
+When using camel-jslt-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jslt-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jslt sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prettyPrint* | If true, JSON in output message is pretty printed. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jslt.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jslt.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jslt.functions* | JSLT can be extended by plugging in functions written in Java. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-json-validator-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-json-validator-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f4366d1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-json-validator-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-json-validator-kafka-connector-sink]]
+= camel-json-validator-kafka-connector sink configuration
+
+When using camel-json-validator-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-json-validator-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-json-validator sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether to fail if no body exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullHeader* | Whether to fail if no header exists when validating against a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To validate against a header instead of the message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | To use a custom ValidatorErrorHandler. The default error handler captures the errors and throws an exception. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLoader* | To use a custom schema loader allowing for adding custom format validation. The default implementation will create a schema loader with draft v4 support. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.json-validator.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.json-validator.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jt400-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jt400-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f2daa0a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jt400-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-jt400-kafka-connector-sink]]
+= camel-jt400-kafka-connector sink configuration
+
+When using camel-jt400-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jt400-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jt400 sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.userID* | Returns the ID of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.password* | Returns the password of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.systemName* | Returns the name of the AS/400 system. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.objectPath* | Returns the fully qualified integrated file system path name of the target object of this endpoint. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.type* | Whether to work with data queues or remote program call One of: [DTAQ] [PGM] [SRVPGM] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.ccsid* | Sets the CCSID to use for the connection with the AS/400 system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.format* | Sets the data format for sending messages. One of: [text] [binary] | "text" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.guiAvailable* | Sets whether AS/400 prompting is enabled in the environment running Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyed* | Whether to use keyed or non-keyed data queues. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.searchKey* | Search key for keyed data queues. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputFieldsIdxArray* | Specifies which fields (program parameters) are output parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputFieldsLengthArray* | Specifies the fields (program parameters) length as in the AS/400 program definition. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.procedureName* | Procedure name from a service program to call | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secured* | Whether connections to AS/400 are secured with SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.connectionPool* | Default connection pool used by the component. Note that this pool is lazily initialized. This is because in a scenario where the user always provides a pool, it would be wasteful for Camel to initialize and keep an idle pool. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-jt400-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-jt400-kafka-source-connector.adoc
new file mode 100644
index 0000000..55b1fba
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-jt400-kafka-source-connector.adoc
@@ -0,0 +1,63 @@
+// kafka-connector options: START
+[[camel-jt400-kafka-connector-source]]
+= camel-jt400-kafka-connector source configuration
+
+When using camel-jt400-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-jt400-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-jt400 source connector supports 37 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.userID* | Returns the ID of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.password* | Returns the password of the AS/400 user. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.systemName* | Returns the name of the AS/400 system. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.objectPath* | Returns the fully qualified integrated file system path name of the target object of this endpoint. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.type* | Whether to work with data queues or remote program call One of: [DTAQ] [PGM] [SRVPGM] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.ccsid* | Sets the CCSID to use for the connection with the AS/400 system. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.format* | Sets the data format for sending messages. One of: [text] [binary] | "text" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.guiAvailable* | Sets whether AS/400 prompting is enabled in the environment running Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyed* | Whether to use keyed or non-keyed data queues. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchKey* | Search key for keyed data queues. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeout* | Timeout in millis the consumer will wait while trying to read a new message of the data queue. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchType* | Search type such as EQ for equal etc. One of: [EQ] [NE] [LT] [LE] [GT] [GE] | "EQ" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secured* | Whether connections to AS/400 are secured with SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.jt400.connectionPool* | Default connection pool used by the component. Note that this pool is lazily initialized. This is because in a scenario where the user always provides a pool, it would be wasteful for Camel to initialize and keep an idle pool. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kafka-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kafka-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8b84a7a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kafka-kafka-sink-connector.adoc
@@ -0,0 +1,98 @@
+// kafka-connector options: START
+[[camel-kafka-kafka-connector-sink]]
+= camel-kafka-kafka-connector sink configuration
+
+When using camel-kafka-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kafka-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kafka sink connector supports 72 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | Name of the topic to use. On the consumer you can use comma to separate multiple topics. A producer can only send a message to a single topic. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.additionalProperties* | Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | The client id is a user-specified string sent in each request to help trace calls. It should logically identify the application making the request. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectBackoffMaxMs* | The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms. | "1000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferMemorySize* | The total bytes of memory the producer can use to buffer records waiting to be sent to the server. If records are sent faster than they can be delivered to the server the producer will either block or throw an exception based on the preference specified by block.on.buffer.full.This setting should correspond roughly to the total memory the producer will use, but is not a hard bound since not all memory the producer uses is used for buffering. Some additional memory will be used for compression (if compression is enabled) as well as for maintaining in-flight requests. | "33554432" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionCodec* | This parameter allows you to specify the compression codec for all data generated by this producer. Valid values are none, gzip and snappy. One of: [none] [gzip] [snappy] [lz4] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionMaxIdleMs* | Close idle connections after the number of milliseconds specified by this config. | "540000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableIdempotence* | If set to 'true' the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer retries may write duplicates of the retried message in the stream. If set to true this option will require max.in.flight.requests.per.connection to be set to 1 and retries cannot be zero and additionally acks must be set to 'all'. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kafkaHeaderSerializer* | To use a custom KafkaHeaderSerializer to serialize kafka headers values | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | The record key (or null if no key is specified). If this option has been configured then it take precedence over header KafkaConstants#KEY | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keySerializerClass* | The serializer class for keys (defaults to the same as for messages if nothing is given). | "org.apache.kafka.common.serialization.StringSerializer" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lingerMs* | The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay�that is, rather than immediately sending out a record the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if we have fewer than this many bytes accumulated for this partition we will 'linger' for the specified time waiting for more records to show up. This setting defaults to 0 (i.e. no delay). Setting linger.ms=5, for example, would have the effect of reducing the number of requests sent but would add up to 5ms of latency to records sent in the absense of load. | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxBlockMs* | The configuration controls how long sending to kafka will block. These methods can be blocked for multiple reasons. For e.g: buffer full, metadata unavailable.This configuration imposes maximum limit on the total time spent in fetching metadata, serialization of key and value, partitioning and allocation of buffer memory when doing a send(). In case of partitionsFor(), this configuration imposes a maximum time threshold on waiting for metadata | "60000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInFlightRequest* | The maximum number of unacknowledged requests the client will send on a single connection before blocking. Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of message re-ordering due to retries (i.e., if retries are enabled). | "5" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRequestSize* | The maximum size of a request. This is also effectively a cap on the maximum record size. Note that the server has its own cap on record size which may be different from this. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests. | "1048576" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metadataMaxAgeMs* | The period of time in milliseconds after which we force a refresh of metadata even if we haven't seen any partition leadership changes to proactively discover any new brokers or partitions. | "300000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricReporters* | A list of classes to use as metrics reporters. Implementing the MetricReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricsSampleWindowMs* | The number of samples maintained to compute metrics. | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noOfMetricsSample* | The number of samples maintained to compute metrics. | "2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.partitioner* | The partitioner class for partitioning messages amongst sub-topics. The default partitioner is based on the hash of the key. | "org.apache.kafka.clients.producer.internals.DefaultPartitioner" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.partitionKey* | The partition to which the record will be sent (or null if no partition was specified). If this option has been configured then it take precedence over header KafkaConstants#PARTITION_KEY | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerBatchSize* | The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. This helps performance on both the client and the server. This configuration controls the default batch size in bytes. No attempt will be made to batch records larger than this size.Requests sent to brokers will contain multiple batches, one for each partition with data available to be sent.A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records. | "16384" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queueBufferingMaxMessages* | The maximum number of unsent messages that can be queued up the producer when using async mode before either the producer must be blocked or data must be dropped. | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferBytes* | The size of the TCP receive buffer (SO_RCVBUF) to use when reading data. | "65536" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectBackoffMs* | The amount of time to wait before attempting to reconnect to a given host. This avoids repeatedly connecting to a host in a tight loop. This backoff applies to all requests sent by the consumer to the broker. | "50" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.recordMetadata* | Whether the producer should store the RecordMetadata results from sending to Kafka. The results are stored in a List containing the RecordMetadata metadata's. The list is stored on a header with the key KafkaConstants#KAFKA_RECORDMETA | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestRequiredAcks* | The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are common: acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won't generally know of any failures). The offset given back for each record will always be set to -1. acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost. acks=all This means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. One of: [-1] [0] [1] [all] | "1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutMs* | The amount of time the broker will wait trying to meet the request.required.acks requirement before sending back an error to the client. | "305000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retries* | Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. Note that this retry is no different than if the client resent the record upon receiving the error. Allowing retries will potentially change the ordering of records because if two records are sent to a single partition, and the first fails and is retried but the second succeeds, then the second record may appear first. | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryBackoffMs* | Before each retry, the producer refreshes the metadata of relevant topics to see if a new leader has been elected. Since leader election takes a bit of time, this property specifies the amount of time that the producer waits before refreshing the metadata. | "100" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferBytes* | Socket write buffer size | "131072" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serializerClass* | The serializer class for messages. | "org.apache.kafka.common.serialization.StringSerializer" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerPool* | To use a custom worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerPoolCoreSize* | Number of core threads for the worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. | "10" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerPoolMaxSize* | Maximum number of threads for the worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. | "20" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.interceptorClasses* | Sets interceptors for producer or consumers. Producer interceptors have to be classes implementing org.apache.kafka.clients.producer.ProducerInterceptor Consumer interceptors have to be classes implementing org.apache.kafka.clients.consumer.ConsumerInterceptor Note that if you use Producer interceptor on a consumer it will throw a class cast exception in runtime | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosBeforeReloginMinTime* | Login thread sleep time between refresh attempts. | "60000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosInitCmd* | Kerberos kinit command path. Default is /usr/bin/kinit | "/usr/bin/kinit" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosPrincipalToLocalRules* | A list of rules for mapping from principal names to short names (typically operating system usernames). The rules are evaluated in order and the first rule that matches a principal name is used to map it to a short name. Any later rules in the list are ignored. By default, principal names of the form \{username\}/\{hostname\}\{REALM\} are mapped to \{username\}. For more details on the format please see the security authorization and acls documentation.. Multiple values can be separated by comma | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosRenewJitter* | Percentage of random jitter added to the renewal time. | "0.05" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kerberosRenewWindowFactor* | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. | "0.8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saslJaasConfig* | Expose the kafka sasl.jaas.config parameter Example: org.apache.kafka.common.security.plain.PlainLoginModule required username=USERNAME password=PASSWORD; | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saslKerberosServiceName* | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saslMechanism* | The Simple Authentication and Security Layer (SASL) Mechanism used. For the valid values see a href= \http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml\http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml | "GSSAPI" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProtocol* | Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT and SSL are supported | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslCipherSuites* | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol.By default all the available cipher suites are supported. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | SSL configuration using a Camel SSLContextParameters object. If configured it's applied before the other SSL endpoint parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslEnabledProtocols* | The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1 and TLSv1 are enabled by default. | "TLSv1.2,TLSv1.1,TLSv1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslEndpointAlgorithm* | The endpoint identification algorithm to validate server hostname using server certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeymanagerAlgorithm* | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | "SunX509" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeyPassword* | The password of the private key in the key store file. This is optional for client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeystoreLocation* | The location of the key store file. This is optional for client and can be used for two-way authentication for client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeystorePassword* | The store password for the key store file.This is optional for client and only needed if ssl.keystore.location is configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslKeystoreType* | The file format of the key store file. This is optional for client. Default value is JKS | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProtocol* | The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. | "TLS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProvider* | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTrustmanagerAlgorithm* | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | "PKIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTruststoreLocation* | The location of the trust store file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTruststorePassword* | The password for the trust store file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslTruststoreType* | The file format of the trust store file. Default value is JKS. | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaRegistryURL* | URL of the Confluent Platform schema registry servers to use. The format is host1:port1,host2:port2. This is known as schema.registry.url in the Confluent Platform documentation. This option is only available in the Confluent Platform (not standard Apache Kafka) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.configuration* | Allows to pre-configure the Kafka component with common options that the endpoints will reuse. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.workerPool* | To use a shared custom worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. If using this option then you must handle the lifecycle of the thread pool to shut the pool down when no longer needed. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kafka-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kafka-kafka-source-connector.adoc
new file mode 100644
index 0000000..4f8bd08
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kafka-kafka-source-connector.adoc
@@ -0,0 +1,95 @@
+// kafka-connector options: START
+[[camel-kafka-kafka-connector-source]]
+= camel-kafka-kafka-connector source configuration
+
+When using camel-kafka-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kafka-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kafka source connector supports 69 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | Name of the topic to use. On the consumer you can use comma to separate multiple topics. A producer can only send a message to a single topic. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.additionalProperties* | Sets additional properties for either kafka consumer or kafka producer in case they can't be set directly on the camel configurations (e.g: new Kafka properties that are not reflected yet in Camel configurations), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=\http://localhost:8811/avro | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | The client id is a user-specified string sent in each request to help trace calls. It should logically identify the application making the request. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectBackoffMaxMs* | The maximum amount of time in milliseconds to wait when reconnecting to a broker that has repeatedly failed to connect. If provided, the backoff per host will increase exponentially for each consecutive connection failure, up to this maximum. After calculating the backoff increase, 20% random jitter is added to avoid connection storms. | "1000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowManualCommit* | Whether to allow doing manual commits via KafkaManualCommit. If this option is enabled then an instance of KafkaManualCommit is stored on the Exchange message header, which allows end users to access this API and perform manual offset commits via the Kafka consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCommitEnable* | If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer. This committed offset will be used when the process fails as the position from which the new consumer will begin. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCommitIntervalMs* | The frequency in ms that the consumer offsets are committed to zookeeper. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCommitOnStop* | Whether to perform an explicit auto commit when the consumer stops to ensure the broker has a commit from the last consumed message. This requires the option autoCommitEnable is turned on. The possible values are: sync, async, or none. And sync is the default value. One of: [sync] [async] [none] | "sync" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoOffsetReset* | What to do when there is no initial offset in ZooKeeper or if an offset is out of range: earliest : automatically reset the offset to the earliest offset latest : automatically reset the offset to the latest offset fail: throw exception to the consumer One of: [latest] [earliest] [none] | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.breakOnFirstError* | This options controls what happens when a consumer is processing an exchange and it fails. If the option is false then the consumer continues to the next message and processes it. If the option is true then the consumer breaks out, and will seek back to offset of the message that caused a failure, and then re-attempt to process this message. However this can lead to endless processing of the same message if its bound to fail every time, eg a poison message. Therefore its recommended to deal with that for example by using Camel's error handler. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.checkCrcs* | Automatically check the CRC32 of the records consumed. This ensures no on-the-wire or on-disk corruption to the messages occurred. This check adds some overhead, so it may be disabled in cases seeking extreme performance. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerRequestTimeoutMs* | The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. | "40000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumersCount* | The number of consumers that connect to kafka server | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerStreams* | Number of concurrent consumers on the consumer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchMaxBytes* | The maximum amount of data the server should return for a fetch request This is not an absolute maximum, if the first message in the first non-empty partition of the fetch is larger than this value, the message will still be returned to ensure that the consumer can make progress. The maximum message size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). Note that the consumer performs multiple fetches in parallel. | "52428800" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchMinBytes* | The minimum amount of data the server should return for a fetch request. If insufficient data is available the request will wait for that much data to accumulate before answering the request. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchWaitMaxMs* | The maximum amount of time the server will block before answering the fetch request if there isn't sufficient data to immediately satisfy fetch.min.bytes | "500" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupId* | A string that uniquely identifies the group of consumer processes to which this consumer belongs. By setting the same group id multiple processes indicate that they are all part of the same consumer group. This option is required for consumers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.heartbeatIntervalMs* | The expected time between heartbeats to the consumer coordinator when using Kafka's group management facilities. Heartbeats are used to ensure that the consumer's session stays active and to facilitate rebalancing when new consumers join or leave the group. The value must be set lower than session.timeout.ms, but typically should be set no higher than 1/3 of that value. It can be adjusted even lower to control the expected time for normal rebalances. | "3000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kafkaHeaderDeserializer* | To use a custom KafkaHeaderDeserializer to deserialize kafka headers values | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyDeserializer* | Deserializer class for key that implements the Deserializer interface. | "org.apache.kafka.common.serialization.StringDeserializer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPartitionFetchBytes* | The maximum amount of data per-partition the server will return. The maximum total memory used for a request will be #partitions max.partition.fetch.bytes. This size must be at least as large as the maximum message size the server allows or else it is possible for the producer to send messages larger than the consumer can fetch. If that happens, the consumer can get stuck trying to fetch a large message on a certain partition. | "1048576" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPollIntervalMs* | The maximum delay between invocations of poll() when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records. If poll() is not called before expiration of this timeout, then the consumer is considered failed and the group will rebalance in order to reassign the partitions to another member. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPollRecords* | The maximum number of records returned in a single call to poll() | "500" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.offsetRepository* | The offset repository to use in order to locally store the offset of each partition of the topic. Defining one will disable the autocommit. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.partitionAssignor* | The class name of the partition assignment strategy that the client will use to distribute partition ownership amongst consumer instances when group management is used | "org.apache.kafka.clients.consumer.RangeAssignor" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeoutMs* | The timeout used when polling the KafkaConsumer. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.seekTo* | Set if KafkaConsumer will read from beginning or end on startup: beginning : read from beginning end : read from end This is replacing the earlier property seekToBeginning One of: [beginning] [end] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionTimeoutMs* | The timeout used to detect failures when using Kafka's group management facilities. | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.specificAvroReader* | This enables the use of a specific Avro reader for use with the Confluent Platform schema registry and the io.confluent.kafka.serializers.KafkaAvroDeserializer. This option is only available in the Confluent Platform (not standard Apache Kafka) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topicIsPattern* | Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.valueDeserializer* | Deserializer class for value that implements the Deserializer interface. | "org.apache.kafka.common.serialization.StringDeserializer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.interceptorClasses* | Sets interceptors for producer or consumers. Producer interceptors have to be classes implementing org.apache.kafka.clients.producer.ProducerInterceptor Consumer interceptors have to be classes implementing org.apache.kafka.clients.consumer.ConsumerInterceptor Note that if you use Producer interceptor on a consumer it will throw a class cast exception in runtime | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosBeforeReloginMinTime* | Login thread sleep time between refresh attempts. | "60000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosInitCmd* | Kerberos kinit command path. Default is /usr/bin/kinit | "/usr/bin/kinit" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosPrincipalToLocal Rules* | A list of rules for mapping from principal names to short names (typically operating system usernames). The rules are evaluated in order and the first rule that matches a principal name is used to map it to a short name. Any later rules in the list are ignored. By default, principal names of the form \{username\}/\{hostname\}\{REALM\} are mapped to \{username\}. For more details on the format please see the security authorization and acls documentation.. Multiple values can be separated by comma | "DEFAULT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosRenewJitter* | Percentage of random jitter added to the renewal time. | "0.05" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kerberosRenewWindowFactor* | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. | "0.8" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.saslJaasConfig* | Expose the kafka sasl.jaas.config parameter Example: org.apache.kafka.common.security.plain.PlainLoginModule required username=USERNAME password=PASSWORD; | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.saslKerberosServiceName* | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.saslMechanism* | The Simple Authentication and Security Layer (SASL) Mechanism used. For the valid values see a href= \http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml\http://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml | "GSSAPI" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProtocol* | Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT and SSL are supported | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslCipherSuites* | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol.By default all the available cipher suites are supported. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | SSL configuration using a Camel SSLContextParameters object. If configured it's applied before the other SSL endpoint parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslEnabledProtocols* | The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1 and TLSv1 are enabled by default. | "TLSv1.2,TLSv1.1,TLSv1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslEndpointAlgorithm* | The endpoint identification algorithm to validate server hostname using server certificate. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslKeymanagerAlgorithm* | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | "SunX509" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslKeystoreType* | The file format of the key store file. This is optional for client. Default value is JKS | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProtocol* | The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. | "TLS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProvider* | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslTrustmanagerAlgorithm* | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | "PKIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslTruststoreType* | The file format of the trust store file. Default value is JKS. | "JKS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schemaRegistryURL* | URL of the Confluent Platform schema registry servers to use. The format is host1:port1,host2:port2. This is known as schema.registry.url in the Confluent Platform documentation. This option is only available in the Confluent Platform (not standard Apache Kafka) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.brokers* | URL of the Kafka brokers to use. The format is host1:port1,host2:port2, and the list can be a subset of brokers or a VIP pointing to a subset of brokers. This option is known as bootstrap.servers in the Kafka documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.configuration* | Allows to pre-configure the Kafka component with common options that the endpoints will reuse. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.allowManualCommit* | Whether to allow doing manual commits via KafkaManualCommit. If this option is enabled then an instance of KafkaManualCommit is stored on the Exchange message header, which allows end users to access this API and perform manual offset commits via the Kafka consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.breakOnFirstError* | This options controls what happens when a consumer is processing an exchange and it fails. If the option is false then the consumer continues to the next message and processes it. If the option is true then the consumer breaks out, and will seek back to offset of the message that caused a failure, and then re-attempt to process this message. However this can lead to endless processing of the same message if its bound to fail every time, eg a poison message. Therefore its recommended to deal with that for example by using Camel's error handler. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.kafkaManualCommitFactory* | Factory to use for creating KafkaManualCommit instances. This allows to plugin a custom factory to create custom KafkaManualCommit instances in case special logic is needed when doing manual commits that deviates from the default implementation that comes out of the box. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.workerPool* | To use a shared custom worker pool for continue routing Exchange after kafka server has acknowledge the message that was sent to it from KafkaProducer using asynchronous non-blocking processing. If using this option then you must handle the lifecycle of the thread pool to shut the pool down when no longer needed. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kafka.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-config-maps-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-config-maps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b72d15b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-config-maps-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-config-maps-kafka-connector-sink]]
+= camel-kubernetes-config-maps-kafka-connector sink configuration
+
+When using camel-kubernetes-config-maps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-config-maps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-config-maps sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-config-maps.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-config-maps.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-deployments-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-deployments-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cf5344c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-deployments-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-deployments-kafka-connector-sink]]
+= camel-kubernetes-deployments-kafka-connector sink configuration
+
+When using camel-kubernetes-deployments-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-deployments-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-deployments sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-deployments-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-deployments-kafka-source-connector.adoc
new file mode 100644
index 0000000..668f0bd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-deployments-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-deployments-kafka-connector-source]]
+= camel-kubernetes-deployments-kafka-connector source configuration
+
+When using camel-kubernetes-deployments-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-deployments-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-deployments source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-deployments.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-hpa-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-hpa-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2983153
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-hpa-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-hpa-kafka-connector-sink]]
+= camel-kubernetes-hpa-kafka-connector sink configuration
+
+When using camel-kubernetes-hpa-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-hpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-hpa sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-hpa-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-hpa-kafka-source-connector.adoc
new file mode 100644
index 0000000..adfc7e1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-hpa-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-hpa-kafka-connector-source]]
+= camel-kubernetes-hpa-kafka-connector source configuration
+
+When using camel-kubernetes-hpa-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-hpa-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-hpa source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-hpa.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-job-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-job-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0e92f17
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-job-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-job-kafka-connector-sink]]
+= camel-kubernetes-job-kafka-connector sink configuration
+
+When using camel-kubernetes-job-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-job-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-job sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-job-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-job-kafka-source-connector.adoc
new file mode 100644
index 0000000..97b281f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-job-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-job-kafka-connector-source]]
+= camel-kubernetes-job-kafka-connector source configuration
+
+When using camel-kubernetes-job-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-job-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-job source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-job.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-namespaces-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-namespaces-kafka-sink-connector.adoc
new file mode 100644
index 0000000..83be393
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-namespaces-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-namespaces-kafka-connector-sink]]
+= camel-kubernetes-namespaces-kafka-connector sink configuration
+
+When using camel-kubernetes-namespaces-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-namespaces-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-namespaces sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-namespaces-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-namespaces-kafka-source-connector.adoc
new file mode 100644
index 0000000..d0f8e93
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-namespaces-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-namespaces-kafka-connector-source]]
+= camel-kubernetes-namespaces-kafka-connector source configuration
+
+When using camel-kubernetes-namespaces-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-namespaces-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-namespaces source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-namespaces.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-nodes-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-nodes-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1efc550
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-nodes-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-nodes-kafka-connector-sink]]
+= camel-kubernetes-nodes-kafka-connector sink configuration
+
+When using camel-kubernetes-nodes-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-nodes-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-nodes sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-nodes-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-nodes-kafka-source-connector.adoc
new file mode 100644
index 0000000..fa37757
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-nodes-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-nodes-kafka-connector-source]]
+= camel-kubernetes-nodes-kafka-connector source configuration
+
+When using camel-kubernetes-nodes-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-nodes-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-nodes source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-nodes.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc
new file mode 100644
index 0000000..da2aa8a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-persistent-volumes-claims-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-persistent-volumes-claims-kafka-connector-sink]]
+= camel-kubernetes-persistent-volumes-claims-kafka-connector sink configuration
+
+When using camel-kubernetes-persistent-volumes-claims-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-persistent-volumes-claims-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-persistent-volumes-claims sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-persistent-volumes-claims.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-persistent-volumes-claims.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b06a1e5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-persistent-volumes-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-persistent-volumes-kafka-connector-sink]]
+= camel-kubernetes-persistent-volumes-kafka-connector sink configuration
+
+When using camel-kubernetes-persistent-volumes-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-persistent-volumes-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-persistent-volumes sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-persistent-volumes.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-persistent-volumes.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-pods-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-pods-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0d14c97
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-pods-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-pods-kafka-connector-sink]]
+= camel-kubernetes-pods-kafka-connector sink configuration
+
+When using camel-kubernetes-pods-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-pods-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-pods sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-pods-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-pods-kafka-source-connector.adoc
new file mode 100644
index 0000000..18470c2
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-pods-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-pods-kafka-connector-source]]
+= camel-kubernetes-pods-kafka-connector source configuration
+
+When using camel-kubernetes-pods-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-pods-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-pods source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-pods.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6f9b43d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-replication-controllers-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-replication-controllers-kafka-connector-sink]]
+= camel-kubernetes-replication-controllers-kafka-connector sink configuration
+
+When using camel-kubernetes-replication-controllers-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-replication-controllers-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-replication-controllers sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-replication-controllers-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-replication-controllers-kafka-source-connector.adoc
new file mode 100644
index 0000000..d0f39ca
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-replication-controllers-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-replication-controllers-kafka-connector-source]]
+= camel-kubernetes-replication-controllers-kafka-connector source configuration
+
+When using camel-kubernetes-replication-controllers-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-replication-controllers-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-replication-controllers source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.bridge ErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| * camel.component.kubernetes-replication-controllers.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-resources-quota-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-resources-quota-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a4796c4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-resources-quota-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-resources-quota-kafka-connector-sink]]
+= camel-kubernetes-resources-quota-kafka-connector sink configuration
+
+When using camel-kubernetes-resources-quota-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-resources-quota-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-resources-quota sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-resources-quota.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-resources-quota.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-secrets-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-secrets-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4afadf2
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-secrets-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-secrets-kafka-connector-sink]]
+= camel-kubernetes-secrets-kafka-connector sink configuration
+
+When using camel-kubernetes-secrets-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-secrets-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-secrets sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-secrets.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-secrets.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-service-accounts-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-service-accounts-kafka-sink-connector.adoc
new file mode 100644
index 0000000..383b491
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-service-accounts-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-service-accounts-kafka-connector-sink]]
+= camel-kubernetes-service-accounts-kafka-connector sink configuration
+
+When using camel-kubernetes-service-accounts-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-service-accounts-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-service-accounts sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-service-accounts.lazy StartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-service-accounts.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-services-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-services-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3ea8399
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-services-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-kubernetes-services-kafka-connector-sink]]
+= camel-kubernetes-services-kafka-connector sink configuration
+
+When using camel-kubernetes-services-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-services-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-services sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kubernetes-services-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kubernetes-services-kafka-source-connector.adoc
new file mode 100644
index 0000000..18196fd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kubernetes-services-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-kubernetes-services-kafka-connector-source]]
+= camel-kubernetes-services-kafka-connector source configuration
+
+When using camel-kubernetes-services-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kubernetes-services-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kubernetes-services source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelKey* | The Consumer Label key when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.labelValue* | The Consumer Label value when watching at some resources | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespace* | The namespace | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Consumer pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resourceName* | The Consumer Resource Name we would like to watch | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kubernetes-services.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-kudu-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-kudu-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bde3d2a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-kudu-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-kudu-kafka-connector-sink]]
+= camel-kudu-kafka-connector sink configuration
+
+When using camel-kudu-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-kudu-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-kudu sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Host of the server to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port of the server to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.tableName* | Table to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to perform One of: [INSERT] [CREATE_TABLE] [SCAN] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kudu.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.kudu.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-language-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-language-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b670a89
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-language-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-language-kafka-connector-sink]]
+= camel-language-kafka-connector sink configuration
+
+When using camel-language-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-language-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-language sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.languageName* | Sets the name of the language to use One of: [bean] [constant] [exchangeProperty] [file] [groovy] [header] [javascript] [jsonpath] [mvel] [ognl] [] [ref] [simple] [spel] [sql] [terser] [tokenize] [xpath] [xquery] [xtokenize] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.resourceUri* | Path to the resource, or a reference to lookup a bean in the Registry to use as the resource | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Whether the script is binary content or text content. By default the script is read as text content (eg java.lang.String) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cacheScript* | Whether to cache the compiled script and reuse Notice reusing the script can cause side effects from processing one Camel org.apache.camel.Exchange to the next org.apache.camel.Exchange. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.script* | Sets the script to execute | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transform* | Whether or not the result of the script should be used as message body. This options is default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.language.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.language.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ldap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ldap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..01b78cc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ldap-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-ldap-kafka-connector-sink]]
+= camel-ldap-kafka-connector sink configuration
+
+When using camel-ldap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ldap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ldap sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.dirContextName* | Name of either a javax.naming.directory.DirContext, or java.util.Hashtable, or Map bean to lookup in the registry. If the bean is either a Hashtable or Map then a new javax.naming.directory.DirContext instance is created for each use. If the bean is a javax.naming.directory.DirContext then the bean is used as given. The latter may not be possible in all situations where the javax.naming.directory.DirContext must not be shared, and in those situations it can be better to use java.util.Hashtable or Map instead. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.base* | The base DN for searches. | "ou=system" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageSize* | When specified the ldap module uses paging to retrieve all results (most LDAP Servers throw an exception when trying to retrieve more than 1000 entries in one query). To be able to use this a LdapContext (subclass of DirContext) has to be passed in as ldapServerBean (otherwise an exception is thrown) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.returnedAttributes* | Comma-separated list of attributes that should be set in each entry of the result | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scope* | Specifies how deeply to search the tree of entries, starting at the base DN. One of: [object] [onelevel] [subtree] | "subtree" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ldif-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ldif-kafka-sink-connector.adoc
new file mode 100644
index 0000000..51b5c9a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ldif-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-ldif-kafka-connector-sink]]
+= camel-ldif-kafka-connector sink configuration
+
+When using camel-ldif-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ldif-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ldif sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.ldapConnectionName* | The name of the LdapConnection bean to pull from the registry. Note that this must be of scope prototype to avoid it being shared among threads or using a connection that has timed out. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldif.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ldif.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-log-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-log-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7a62b83
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-log-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-log-kafka-connector-sink]]
+= camel-log-kafka-connector sink configuration
+
+When using camel-log-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-log-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-log sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.loggerName* | Name of the logging category to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.groupActiveOnly* | If true, will hide stats when no new messages have been received for a time interval, if false, show stats regardless of message traffic. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupDelay* | Set the initial delay for stats (in millis) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupInterval* | If specified will group message stats by this time interval (in millis) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.groupSize* | An integer that specifies a group size for throughput logging. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.level* | Logging level to use. The default value is INFO. One of: [ERROR] [WARN] [INFO] [DEBUG] [TRACE] [OFF] | "INFO" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logMask* | If true, mask sensitive information like password or passphrase in the log. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marker* | An optional Marker name to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exchangeFormatter* | To use a custom exchange formatter | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxChars* | Limits the number of characters logged per line. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.multiline* | If enabled then each information is outputted on a newline. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showAll* | Quick option for turning all options on. (multiline, maxChars has to be manually set if to be used) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showBody* | Show the message body. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showBodyType* | Show the body Java type. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showCaughtException* | If the exchange has a caught exception, show the exception message (no stack trace). A caught exception is stored as a property on the exchange (using the key org.apache.camel.Exchange#EXCEPTION_CAUGHT) and for instance a doCatch can catch exceptions. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showException* | If the exchange has an exception, show the exception message (no stacktrace) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showExchangeId* | Show the unique exchange ID. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showExchangePattern* | Shows the Message Exchange Pattern (or MEP for short). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showFiles* | If enabled Camel will output files | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showFuture* | If enabled Camel will on Future objects wait for it to complete to obtain the payload to be logged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showHeaders* | Show the message headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showProperties* | Show the exchange properties. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showStackTrace* | Show the stack trace, if an exchange has an exception. Only effective if one of showAll, showException or showCaughtException are enabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.showStreams* | Whether Camel should show stream bodies or not (eg such as java.io.InputStream). Beware if you enable this option then you may not be able later to access the message body as the stream have already been read by this logger. To remedy this you will have to use Stream Caching. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipBodyLineSeparator* | Whether to skip line separators when logging the message body. This allows to log the message body in one line, setting this option to false will preserve any line separators from the body, which then will log the body as is. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.style* | Sets the outputs style to use. One of: [Default] [Tab] [Fixed] | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.component.log.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.log.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.log.exchangeFormatter* | Sets a custom ExchangeFormatter to convert the Exchange to a String suitable for logging. If not specified, we default to DefaultExchangeFormatter. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-lpr-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-lpr-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2fc0a76
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-lpr-kafka-sink-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-lpr-kafka-connector-sink]]
+= camel-lpr-kafka-connector sink configuration
+
+When using camel-lpr-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-lpr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-lpr sink connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostname* | Hostname of the printer | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number of the printer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.printername* | Name of the printer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copies* | Number of copies to print | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.docFlavor* | Sets DocFlavor to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flavor* | Sets DocFlavor to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mediaSize* | Sets the stationary as defined by enumeration names in the javax.print.attribute.standard.MediaSizeName API. The default setting is to use North American Letter sized stationary. The value's case is ignored, e.g. values of iso_a4 and ISO_A4 may be used. | "na-letter" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mediaTray* | Sets MediaTray supported by the javax.print.DocFlavor API, for example upper,middle etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mimeType* | Sets mimeTypes supported by the javax.print.DocFlavor API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.orientation* | Sets the page orientation. One of: [portrait] [landscape] [reverse-portrait] [reverse-landscape] | "portrait" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.printerPrefix* | Sets the prefix name of the printer, it is useful when the printer name does not start with //hostname/printer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToPrinter* | etting this option to false prevents sending of the print data to the printer | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sides* | Sets one sided or two sided printing based on the javax.print.attribute.standard.Sides API One of: [one-sided] [duplex] [tumble] [two-sided-short-edge] [two-sided-long-edge] | "one-sided" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lpr.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lpr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-lucene-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-lucene-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cdc2d27
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-lucene-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-lucene-kafka-connector-sink]]
+= camel-lucene-kafka-connector sink configuration
+
+When using camel-lucene-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-lucene-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-lucene sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The URL to the lucene server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.operation* | Operation to do such as insert or query. One of: [insert] [query] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.analyzer* | An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extracting index terms from text. The value for analyzer can be any class that extends the abstract class org.apache.lucene.analysis.Analyzer. Lucene also offers a rich set of analyzers out of the box | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.indexDir* | A file system directory in which index files are created upon analysis of the document by the specified analyzer | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxHits* | An integer value that limits the result set of the search operation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.srcDir* | An optional directory containing files to be used to be analyzed and added to the index at producer startup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lucene.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lucene.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lucene.config* | To use a shared lucene configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-lumberjack-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-lumberjack-kafka-source-connector.adoc
new file mode 100644
index 0000000..9e78a63
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-lumberjack-kafka-source-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-lumberjack-kafka-connector-source]]
+= camel-lumberjack-kafka-connector source configuration
+
+When using camel-lumberjack-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-lumberjack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-lumberjack source connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Network interface on which to listen for Lumberjack | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Network port on which to listen for Lumberjack | 5044 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | SSL configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.sslContextParameters* | Sets the default SSL configuration to use for all the endpoints. You can also configure it directly at the endpoint level. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.lumberjack.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-master-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-master-kafka-source-connector.adoc
new file mode 100644
index 0000000..738bd39
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-master-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-master-kafka-connector-source]]
+= camel-master-kafka-connector source configuration
+
+When using camel-master-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-master-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-master source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.namespace* | The name of the cluster namespace to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.delegateUri* | The endpoint uri to use in master/slave mode | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.master.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.master.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.master.service* | Inject the service to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.master.serviceSelector* | Inject the service selector used to lookup the CamelClusterService to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-metrics-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-metrics-kafka-sink-connector.adoc
new file mode 100644
index 0000000..02d05a8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-metrics-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-metrics-kafka-connector-sink]]
+= camel-metrics-kafka-connector sink configuration
+
+When using camel-metrics-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-metrics-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-metrics sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.metricsType* | Type of metrics One of: [gauge] [counter] [histogram] [meter] [timer] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.metricsName* | Name of metrics | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | Action when using timer type One of: [start] [stop] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decrement* | Decrement value when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.increment* | Increment value when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mark* | Mark when using meter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | Subject value when using gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | Value value when using histogram type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.metrics.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.metrics.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.metrics.metricRegistry* | To use a custom configured MetricRegistry. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-micrometer-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-micrometer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a35bd5f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-micrometer-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-micrometer-kafka-connector-sink]]
+= camel-micrometer-kafka-connector sink configuration
+
+When using camel-micrometer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-micrometer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-micrometer sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.metricsType* | Type of metrics One of: [COUNTER] [GAUGE] [LONG_TASK_TIMER] [TIMER] [DISTRIBUTION_SUMMARY] [OTHER] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.metricsName* | Name of metrics | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.tags* | Tags of metrics | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.action* | Action expression when using timer type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decrement* | Decrement value expression when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.increment* | Increment value expression when using counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | Value expression when using histogram type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.micrometer.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.micrometer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.micrometer.metricsRegistry* | To use a custom configured MetricRegistry. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-microprofile-metrics-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-microprofile-metrics-kafka-sink-connector.adoc
new file mode 100644
index 0000000..18f19e8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-microprofile-metrics-kafka-sink-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-microprofile-metrics-kafka-connector-sink]]
+= camel-microprofile-metrics-kafka-connector sink configuration
+
+When using camel-microprofile-metrics-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-microprofile-metrics-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-microprofile-metrics sink connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.metricType* | Metric type One of: [concurrent gauge] [counter] [gauge] [meter] [histogram] [timer] [simple timer] [invalid] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.metricName* | Metric name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.action* | Action to use when using the timer type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.counterIncrement* | Increment value when using the counter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.description* | Metric description | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.displayName* | Metric display name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gaugeDecrement* | Decrement metric value when using concurrent gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gaugeIncrement* | Increment metric value when using the concurrent gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gaugeValue* | Decrement metric value when using concurrent gauge type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mark* | Mark value to set when using the meter type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metricUnit* | Metric unit. See org.eclipse.microprofile.metrics.MetricUnits | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tags* | Comma delimited list of tags associated with the metric in the format tagName=tagValue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | Value to set when using the histogram type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.microprofile-metrics.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.microprofile-metrics.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.microprofile-metrics.metric Registry* | Use a custom MetricRegistry. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-milo-client-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-milo-client-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bf7ea4c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-milo-client-kafka-sink-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-milo-client-kafka-connector-sink]]
+= camel-milo-client-kafka-connector sink configuration
+
+When using camel-milo-client-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-client sink connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointUri* | The OPC UA server endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | A virtual client id to force the creation of a new connection instance | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultAwaitWrites* | Default await setting for writes | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discoveryEndpointSuffix* | A suffix for endpoint URI when discovering | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discoveryEndpointUri* | An alternative discovery URI | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | The method definition (see Method ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.node* | The node definition (see Node ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.samplingInterval* | The sampling interval in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowedSecurityPolicies* | A set of allowed security policy URIs. Default is to accept all and use the highest. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationName* | The application name | "Apache Camel adapter for Eclipse Milo" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.applicationUri* | The application URI | "http://camel.apache.org/EclipseMilo/Client" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelLifetime* | Channel lifetime in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAlias* | The name of the key in the keystore file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPassword* | The key password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStorePassword* | The keystore password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreType* | The key store type | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreUrl* | The URL where the key should be loaded from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPendingPublishRequests* | The maximum number of pending publish requests | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxResponseMessageSize* | The maximum number of bytes a response message may have | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.overrideHost* | Override the server reported endpoint host with the host from the endpoint URI. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.productUri* | The product URI | "http://camel.apache.org/EclipseMilo" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Request timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionName* | Session name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionTimeout* | Session timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationName* | Default application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationUri* | Default application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.defaultConfiguration* | All default options for client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.productUri* | Default product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.reconnectTimeout* | Default reconnect timeout | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-milo-client-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-milo-client-kafka-source-connector.adoc
new file mode 100644
index 0000000..6fc3f3a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-milo-client-kafka-source-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-milo-client-kafka-connector-source]]
+= camel-milo-client-kafka-connector source configuration
+
+When using camel-milo-client-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-client-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-client source connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.endpointUri* | The OPC UA server endpoint | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.clientId* | A virtual client id to force the creation of a new connection instance | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultAwaitWrites* | Default await setting for writes | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.discoveryEndpointSuffix* | A suffix for endpoint URI when discovering | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.discoveryEndpointUri* | An alternative discovery URI | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.method* | The method definition (see Method ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.node* | The node definition (see Node ID) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.samplingInterval* | The sampling interval in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowedSecurityPolicies* | A set of allowed security policy URIs. Default is to accept all and use the highest. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationName* | The application name | "Apache Camel adapter for Eclipse Milo" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.applicationUri* | The application URI | "http://camel.apache.org/EclipseMilo/Client" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelLifetime* | Channel lifetime in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyAlias* | The name of the key in the keystore file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPassword* | The key password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStorePassword* | The keystore password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreType* | The key store type | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreUrl* | The URL where the key should be loaded from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPendingPublishRequests* | The maximum number of pending publish requests | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResponseMessageSize* | The maximum number of bytes a response message may have | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.overrideHost* | Override the server reported endpoint host with the host from the endpoint URI. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.productUri* | The product URI | "http://camel.apache.org/EclipseMilo" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeout* | Request timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionName* | Session name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionTimeout* | Session timeout in milliseconds | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationName* | Default application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.applicationUri* | Default application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.defaultConfiguration* | All default options for client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.productUri* | Default product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.reconnectTimeout* | Default reconnect timeout | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-client.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-milo-server-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-milo-server-kafka-sink-connector.adoc
new file mode 100644
index 0000000..af33c42
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-milo-server-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-milo-server-kafka-connector-sink]]
+= camel-milo-server-kafka-connector sink configuration
+
+When using camel-milo-server-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-server sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.itemId* | ID of the item | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationName* | The application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationUri* | The application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindAddresses* | Set the addresses of the local addresses the server should bind to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindPort* | The TCP port the server binds to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.buildInfo* | Server build info | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateManager* | Server certificate manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateValidator* | Validator for client certificates | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.defaultCertificate Validator* | Validator for client certificates using default file based approach | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.enableAnonymous Authentication* | Enable anonymous authentication, disabled by default | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.namespaceUri* | The URI of the namespace, defaults to urn:org:apache:camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.path* | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.productUri* | The product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPolicies* | Security policies | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPoliciesById* | Security policies by URI or name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.serverCertificate* | Server certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.userAuthentication Credentials* | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.usernameSecurityPolicy Uri* | Set the UserTokenPolicy used when One of: [None] [Basic128Rsa15] [Basic256] [Basic256Sha256] [Aes128_Sha256_RsaOaep] [Aes256_Sha256_RsaPss] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-milo-server-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-milo-server-kafka-source-connector.adoc
new file mode 100644
index 0000000..db06ece
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-milo-server-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-milo-server-kafka-connector-source]]
+= camel-milo-server-kafka-connector source configuration
+
+When using camel-milo-server-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-milo-server-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-milo-server source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.itemId* | ID of the item | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationName* | The application name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.applicationUri* | The application URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindAddresses* | Set the addresses of the local addresses the server should bind to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bindPort* | The TCP port the server binds to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.buildInfo* | Server build info | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateManager* | Server certificate manager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.certificateValidator* | Validator for client certificates | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.defaultCertificate Validator* | Validator for client certificates using default file based approach | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.enableAnonymous Authentication* | Enable anonymous authentication, disabled by default | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.namespaceUri* | The URI of the namespace, defaults to urn:org:apache:camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.path* | The path to be appended to the end of the endpoint url. (doesn't need to start with '/') | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.productUri* | The product URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPolicies* | Security policies | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.securityPoliciesById* | Security policies by URI or name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.serverCertificate* | Server certificate | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.userAuthentication Credentials* | Set user password combinations in the form of user1:pwd1,user2:pwd2 Usernames and passwords will be URL decoded | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.usernameSecurityPolicy Uri* | Set the UserTokenPolicy used when One of: [None] [Basic128Rsa15] [Basic256] [Basic256Sha256] [Aes128_Sha256_RsaOaep] [Aes256_Sha256_RsaPss] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.milo-server.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mina-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mina-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e3ff75e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mina-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-mina-kafka-connector-sink]]
+= camel-mina-kafka-connector sink configuration
+
+When using camel-mina-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mina-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mina sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | Protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.minaLogger* | You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sync* | Setting to set endpoint as one-way or request-response. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | You can configure the timeout that specifies how long to wait for a response from a remote server. The timeout unit is in milliseconds, so 60000 is 60 seconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeTimeout* | Maximum amount of time it should take to send data to the MINA session. Default is 10000 milliseconds. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cachedAddress* | Whether to create the InetAddress once and reuse. Setting this to false allows to pickup DNS changes in the network. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazySessionCreation* | Sessions can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumPoolSize* | Number of worker threads in the worker pool for TCP and UDP | 16 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.orderedThreadPoolExecutor* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowDefaultCodec* | The mina component installs a default codec if both, codec is null and textline is false. Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain. This is useful in scenarios where another filter must be the first in the filter chain, like the SSL filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.codec* | To use a custom minda codec implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoderMaxLineLength* | To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoderMaxLineLength* | To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol. If not provided, Camel will use the JVM default Charset | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filters* | You can set a list of Mina IoFilters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textlineDelimiter* | Only used for TCP and if textline=true. Sets the text line delimiter to use. If none provided, Camel will use DEFAULT. This delimiter is used to mark the end of text. One of: [DEFAULT] [AUTO] [UNIX] [WINDOWS] [MAC] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoStartTls* | Whether to auto start SSL handshake. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure SSL security. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.configuration* | To use the shared mina configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mina-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mina-kafka-source-connector.adoc
new file mode 100644
index 0000000..06af18a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mina-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-mina-kafka-connector-source]]
+= camel-mina-kafka-connector source configuration
+
+When using camel-mina-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mina-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mina source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | Protocol to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minaLogger* | You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | You can configure the timeout that specifies how long to wait for a response from a remote server. The timeout unit is in milliseconds, so 60000 is 60 seconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeTimeout* | Maximum amount of time it should take to send data to the MINA session. Default is 10000 milliseconds. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientMode* | If the clientMode is true, mina consumer will connect the address as a TCP client. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates MinaConsumer if it should disconnect where there is no reply to send back. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates MinaConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumPoolSize* | Number of worker threads in the worker pool for TCP and UDP | 16 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.orderedThreadPoolExecutor* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowDefaultCodec* | The mina component installs a default codec if both, codec is null and textline is false. Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain. This is useful in scenarios where another filter must be the first in the filter chain, like the SSL filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.codec* | To use a custom minda codec implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoderMaxLineLength* | To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoderMaxLineLength* | To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol. If not provided, Camel will use the JVM default Charset | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filters* | You can set a list of Mina IoFilters to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textlineDelimiter* | Only used for TCP and if textline=true. Sets the text line delimiter to use. If none provided, Camel will use DEFAULT. This delimiter is used to mark the end of text. One of: [DEFAULT] [AUTO] [UNIX] [WINDOWS] [MAC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartTls* | Whether to auto start SSL handshake. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure SSL security. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.configuration* | To use the shared mina configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mina.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mllp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mllp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1dcc764
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mllp-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-mllp-kafka-connector-sink]]
+= camel-mllp-kafka-connector sink configuration
+
+When using camel-mllp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mllp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mllp sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.hostname* | Hostname or IP for connection for the TCP connection. The default value is null, which means any local IP address | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the TCP connection | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.autoAck* | Enable/Disable the automatic generation of a MLLP Acknowledgement MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferWrites* | Enable/Disable the buffering of HL7 payloads before writing to the socket. | false | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.hl7Headers* | Enable/Disable the automatic generation of message headers from the HL7 Message MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requireEndOfData* | Enable/Disable strict compliance to the MLLP standard. The MLLP standard specifies START_OF_BLOCKhl7 payloadEND_OF_BLOCKEND_OF_DATA, however, some systems do not send the final END_OF_DATA byte. This setting controls whether or not the final END_OF_DATA byte is required or optional. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stringPayload* | Enable/Disable converting the payload to a String. If enabled, HL7 Payloads received from external systems will be validated converted to a String. If the charsetName property is set, that character set will be used for the conversion. If the charsetName property is not set, the value of MSH-18 will be used to determine th appropriate character set. If MSH-18 is not set, then the default ISO-8859-1 character set will be use. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validatePayload* | Enable/Disable the validation of HL7 Payloads If enabled, HL7 Payloads received from external systems will be validated (see Hl7Util.generateInvalidPayloadExceptionMessage for details on the validation). If and invalid payload is detected, a MllpInvalidMessageException (for consumers) or a MllpInvalidAcknowledgementException will be thrown. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used (this component only supports synchronous operations). | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Enable/disable the SO_KEEPALIVE socket option. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferSize* | Sets the SO_SNDBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Enable/disable the TCP_NODELAY socket option. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Timeout (in milliseconds) for establishing for a TCP connection TCP Client only | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.idleTimeout* | The approximate idle time allowed before the Client TCP Connection will be reset. A null value or a value less than or equal to zero will disable the idle timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSize* | Sets the SO_RCVBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readTimeout* | The SO_TIMEOUT value (in milliseconds) used after the start of an MLLP frame has been received | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeout* | The SO_TIMEOUT value (in milliseconds) used when waiting for the start of an MLLP frame | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charsetName* | Set the CamelCharsetName property on the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.configuration* | Sets the default configuration to use when creating MLLP endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.defaultCharset* | Set the default character set to use for byte to/from String conversions. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhi* | Set the component to log PHI data. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhiMaxBytes* | Set the maximum number of bytes of PHI that will be logged in a log entry. | "5120" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mllp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mllp-kafka-source-connector.adoc
new file mode 100644
index 0000000..9c87b51
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mllp-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-mllp-kafka-connector-source]]
+= camel-mllp-kafka-connector source configuration
+
+When using camel-mllp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mllp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mllp source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.hostname* | Hostname or IP for connection for the TCP connection. The default value is null, which means any local IP address | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the TCP connection | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.autoAck* | Enable/Disable the automatic generation of a MLLP Acknowledgement MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferWrites* | Enable/Disable the buffering of HL7 payloads before writing to the socket. | false | ConfigDef.Importance.LOW
+| *camel.source.endpoint.hl7Headers* | Enable/Disable the automatic generation of message headers from the HL7 Message MLLP Consumers only | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requireEndOfData* | Enable/Disable strict compliance to the MLLP standard. The MLLP standard specifies START_OF_BLOCKhl7 payloadEND_OF_BLOCKEND_OF_DATA, however, some systems do not send the final END_OF_DATA byte. This setting controls whether or not the final END_OF_DATA byte is required or optional. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stringPayload* | Enable/Disable converting the payload to a String. If enabled, HL7 Payloads received from external systems will be validated converted to a String. If the charsetName property is set, that character set will be used for the conversion. If the charsetName property is not set, the value of MSH-18 will be used to determine th appropriate character set. If MSH-18 is not set, then the default ISO-8859-1 character set will be use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.validatePayload* | Enable/Disable the validation of HL7 Payloads If enabled, HL7 Payloads received from external systems will be validated (see Hl7Util.generateInvalidPayloadExceptionMessage for details on the validation). If and invalid payload is detected, a MllpInvalidMessageException (for consumers) or a MllpInvalidAcknowledgementException will be thrown. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to receive incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. If disabled, the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions by logging them at WARN or ERROR level and ignored. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | "InOut" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used (this component only supports synchronous operations). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backlog* | The maximum queue length for incoming connection indications (a request to connect) is set to the backlog parameter. If a connection indication arrives when the queue is full, the connection is refused. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lenientBind* | TCP Server Only - Allow the endpoint to start before the TCP ServerSocket is bound. In some environments, it may be desirable to allow the endpoint to start before the TCP ServerSocket is bound. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConcurrentConsumers* | The maximum number of concurrent MLLP Consumer connections that will be allowed. If a new connection is received and the maximum is number are already established, the new connection will be reset immediately. | 5 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseAddress* | Enable/disable the SO_REUSEADDR socket option. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.acceptTimeout* | Timeout (in milliseconds) while waiting for a TCP connection TCP Server Only | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindRetryInterval* | TCP Server Only - The number of milliseconds to wait between bind attempts | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindTimeout* | TCP Server Only - The number of milliseconds to retry binding to a server port | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendBufferSize* | Sets the SO_SNDBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idleTimeout* | The approximate idle time allowed before the Client TCP Connection will be reset. A null value or a value less than or equal to zero will disable the idle timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReceiveTimeouts* | The maximum number of timeouts (specified by receiveTimeout) allowed before the TCP Connection will be reset. | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.receiveBufferSize* | Sets the SO_RCVBUF option to the specified value (in bytes) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeout* | The SO_TIMEOUT value (in milliseconds) used after the start of an MLLP frame has been received | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeout* | The SO_TIMEOUT value (in milliseconds) used when waiting for the start of an MLLP frame | 15000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charsetName* | Set the CamelCharsetName property on the exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.configuration* | Sets the default configuration to use when creating MLLP endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.defaultCharset* | Set the default character set to use for byte to/from String conversions. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhi* | Set the component to log PHI data. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.component.mllp.logPhiMaxBytes* | Set the maximum number of bytes of PHI that will be logged in a log entry. | "5120" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mock-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mock-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8fcf4c9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mock-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-mock-kafka-connector-sink]]
+= camel-mock-kafka-connector sink configuration
+
+When using camel-mock-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mock-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mock sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of mock endpoint | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.assertPeriod* | Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid. This is used for example to assert that exactly a number of messages arrives. For example if expectedMessageCount(int) was set to 5, then the assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 messages arrives, then you would need to wait a little period to ensure no further message arrives. This is what you can use this method for. By default this period is disabled. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expectedCount* | Specifies the expected number of message exchanges that should be received by this endpoint. Beware: If you want to expect that 0 messages, then take extra care, as 0 matches when the tests starts, so you need to set a assert period time to let the test run for a while to make sure there are still no messages arrived; for that use setAssertPeriod(long). An alternative is to use NotifyBuilder, and use the notifier to know when Camel is done routing some messages, before you call the assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times. If you want to assert that exactly n'th message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failFast* | Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportGroup* | A number that is used to turn on throughput logging based on groups of the size. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultMinimumWaitTime* | Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultWaitTime* | Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainFirst* | Specifies to only retain the first n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the first 10 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retainLast* | Specifies to only retain the last n'th number of received Exchanges. This is used when testing with big data, to reduce memory consumption by not storing copies of every Exchange this mock endpoint receives. Important: When using this limitation, then the getReceivedCounter() will still return the actual number of received Exchanges. For example if we have received 5000 Exchanges, and have configured to only retain the last 20 Exchanges, then the getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods. When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received. You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForEmptyTest* | Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero | 0L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.copyOnExchange* | Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. Is by default true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mock.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mock.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mongodb-gridfs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mongodb-gridfs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1a3546b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mongodb-gridfs-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-mongodb-gridfs-kafka-connector-sink]]
+= camel-mongodb-gridfs-kafka-connector sink configuration
+
+When using camel-mongodb-gridfs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-gridfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb-gridfs sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionBean* | Name of com.mongodb.MongoClient to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.bucket* | Sets the name of the GridFS bucket within the database. Default is fs. | "fs" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.readPreference* | Sets a MongoDB ReadPreference on the Mongo connection. Read preferences set directly on the connection will be overridden by this setting. The com.mongodb.ReadPreference#valueOf(String) utility method is used to resolve the passed readPreference value. Some examples for the possible values are nearest, primary or secondary etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeConcern* | Set the WriteConcern for write operations on MongoDB using the standard ones. Resolved from the fields of the WriteConcern class by calling the WriteConcern#valueOf(String) method. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] [SAFE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Sets the operation this endpoint will execute against GridRS. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mongodb-gridfs-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mongodb-gridfs-kafka-source-connector.adoc
new file mode 100644
index 0000000..8812b5a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mongodb-gridfs-kafka-source-connector.adoc
@@ -0,0 +1,45 @@
+// kafka-connector options: START
+[[camel-mongodb-gridfs-kafka-connector-source]]
+= camel-mongodb-gridfs-kafka-connector source configuration
+
+When using camel-mongodb-gridfs-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-gridfs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb-gridfs source connector supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionBean* | Name of com.mongodb.MongoClient to use. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bucket* | Sets the name of the GridFS bucket within the database. Default is fs. | "fs" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.readPreference* | Sets a MongoDB ReadPreference on the Mongo connection. Read preferences set directly on the connection will be overridden by this setting. The com.mongodb.ReadPreference#valueOf(String) utility method is used to resolve the passed readPreference value. Some examples for the possible values are nearest, primary or secondary etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeConcern* | Set the WriteConcern for write operations on MongoDB using the standard ones. Resolved from the fields of the WriteConcern class by calling the WriteConcern#valueOf(String) method. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] [SAFE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Sets the delay between polls within the Consumer. Default is 500ms | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileAttributeName* | If the QueryType uses a FileAttribute, this sets the name of the attribute that is used. Default is camel-processed. | "camel-processed" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Sets the initialDelay before the consumer will start polling. Default is 1000ms | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentTSCollection* | If the QueryType uses a persistent timestamp, this sets the name of the collection within the DB to store the timestamp. | "camel-timestamps" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentTSObject* | If the QueryType uses a persistent timestamp, this is the ID of the object in the collection to store the timestamp. | "camel-timestamp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.query* | Additional query parameters (in JSON) that are used to configure the query used for finding files in the GridFsConsumer | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queryStrategy* | Sets the QueryStrategy that is used for polling for new files. Default is Timestamp One of: [TimeStamp] [PersistentTimestamp] [FileAttribute] [TimeStampAndFileAttribute] [PersistentTimestampAndFileAttribute] | "TimeStamp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb-gridfs.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mongodb-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mongodb-kafka-sink-connector.adoc
new file mode 100644
index 0000000..04225b7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mongodb-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-mongodb-kafka-connector-sink]]
+= camel-mongodb-kafka-connector sink configuration
+
+When using camel-mongodb-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.connectionBean* | Sets the connection bean reference used to lookup a client for connecting to a database. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collection* | Sets the name of the MongoDB collection to bind to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collectionIndex* | Sets the collection index (JSON FORMAT : { field1 : order1, field2 : order2}) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createCollection* | Create collection during initialisation if it doesn't exist. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mongoConnection* | Sets the connection bean used as a client for connecting to a database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Sets the operation this endpoint will execute against MongoDB. One of: [findById] [findOneByQuery] [findAll] [findDistinct] [insert] [save] [update] [remove] [bulkWrite] [aggregate] [getDbStats] [getColStats] [count] [command] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Convert the output of the producer to the selected type : DocumentList Document or MongoIterable. DocumentList or MongoIterable applies to findAll and aggregate. Document applies to all other operations. One of: [DocumentList] [Document] [MongoIterable] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cursorRegenerationDelay* | MongoDB tailable cursors will block until new data arrives. If no new data is inserted, after some time the cursor will be automatically freed and closed by the MongoDB server. The client is expected to regenerate the cursor if needed. This value specifies the time to wait before attempting to fetch a new cursor, and if the attempt fails, how long before the next attempt is made. Default value is 1000ms. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dynamicity* | Sets whether this endpoint will attempt to dynamically resolve the target database and collection from the incoming Exchange properties. Can be used to override at runtime the database and collection specified on the otherwise static endpoint URI. It is disabled by default to boost performance. Enabling it will take a minimal performance hit. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readPreference* | Configure how MongoDB clients route read operations to the members of a replica set. Possible values are PRIMARY, PRIMARY_PREFERRED, SECONDARY, SECONDARY_PREFERRED or NEAREST One of: [PRIMARY] [PRIMARY_PREFERRED] [SECONDARY] [SECONDARY_PREFERRED] [NEAREST] | "PRIMARY" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeConcern* | Configure the connection bean with the level of acknowledgment requested from MongoDB for write operations to a standalone mongod, replicaset or cluster. Possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED or MAJORITY. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] | "ACKNOWLEDGED" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.writeResultAsHeader* | In write operations, it determines whether instead of returning WriteResult as the body of the OUT message, we transfer the IN message to the OUT and attach the WriteResult as a header. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamFilter* | Filter condition for change streams consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistentId* | One tail tracking collection can host many trackers for several tailable consumers. To keep them separate, each tracker should have its own unique persistentId. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistentTailTracking* | Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackCollection* | Collection where tail tracking information will be persisted. If not specified, MongoDbTailTrackingConfig#DEFAULT_COLLECTION will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackDb* | Indicates what database the tail tracking mechanism will persist to. If not specified, the current database will be picked by default. Dynamicity will not be taken into account even if enabled, i.e. the tail tracking database will not vary past endpoint initialisation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackField* | Field where the last tracked value will be placed. If not specified, MongoDbTailTrackingConfig#DEFAULT_FIELD will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tailTrackIncreasingField* | Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated. The cursor will be (re)created with a query of type: tailTrackIncreasingField greater than lastValue (possibly recovered from persistent tail tracking). Can be of type Integer, Date, String, etc. NOTE: No support for dot notation at the current time, so the field should be at the top level of the document. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.mongoConnection* | A connection client provided externally | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mongodb-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mongodb-kafka-source-connector.adoc
new file mode 100644
index 0000000..2e81b2a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mongodb-kafka-source-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-mongodb-kafka-connector-source]]
+= camel-mongodb-kafka-connector source configuration
+
+When using camel-mongodb-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mongodb-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mongodb source connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.connectionBean* | Sets the connection bean reference used to lookup a client for connecting to a database. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.collection* | Sets the name of the MongoDB collection to bind to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.collectionIndex* | Sets the collection index (JSON FORMAT : { field1 : order1, field2 : order2}) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createCollection* | Create collection during initialisation if it doesn't exist. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.database* | Sets the name of the MongoDB database to target | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mongoConnection* | Sets the connection bean used as a client for connecting to a database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.operation* | Sets the operation this endpoint will execute against MongoDB. One of: [findById] [findOneByQuery] [findAll] [findDistinct] [insert] [save] [update] [remove] [bulkWrite] [aggregate] [getDbStats] [getColStats] [count] [command] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputType* | Convert the output of the producer to the selected type : DocumentList Document or MongoIterable. DocumentList or MongoIterable applies to findAll and aggregate. Document applies to all other operations. One of: [DocumentList] [Document] [MongoIterable] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerType* | Consumer type. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cursorRegenerationDelay* | MongoDB tailable cursors will block until new data arrives. If no new data is inserted, after some time the cursor will be automatically freed and closed by the MongoDB server. The client is expected to regenerate the cursor if needed. This value specifies the time to wait before attempting to fetch a new cursor, and if the attempt fails, how long before the next attempt is made. Default value is 1000ms. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dynamicity* | Sets whether this endpoint will attempt to dynamically resolve the target database and collection from the incoming Exchange properties. Can be used to override at runtime the database and collection specified on the otherwise static endpoint URI. It is disabled by default to boost performance. Enabling it will take a minimal performance hit. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readPreference* | Configure how MongoDB clients route read operations to the members of a replica set. Possible values are PRIMARY, PRIMARY_PREFERRED, SECONDARY, SECONDARY_PREFERRED or NEAREST One of: [PRIMARY] [PRIMARY_PREFERRED] [SECONDARY] [SECONDARY_PREFERRED] [NEAREST] | "PRIMARY" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeConcern* | Configure the connection bean with the level of acknowledgment requested from MongoDB for write operations to a standalone mongod, replicaset or cluster. Possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED or MAJORITY. One of: [ACKNOWLEDGED] [W1] [W2] [W3] [UNACKNOWLEDGED] [JOURNALED] [MAJORITY] | "ACKNOWLEDGED" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.writeResultAsHeader* | In write operations, it determines whether instead of returning WriteResult as the body of the OUT message, we transfer the IN message to the OUT and attach the WriteResult as a header. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamFilter* | Filter condition for change streams consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentId* | One tail tracking collection can host many trackers for several tailable consumers. To keep them separate, each tracker should have its own unique persistentId. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistentTailTracking* | Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackCollection* | Collection where tail tracking information will be persisted. If not specified, MongoDbTailTrackingConfig#DEFAULT_COLLECTION will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackDb* | Indicates what database the tail tracking mechanism will persist to. If not specified, the current database will be picked by default. Dynamicity will not be taken into account even if enabled, i.e. the tail tracking database will not vary past endpoint initialisation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackField* | Field where the last tracked value will be placed. If not specified, MongoDbTailTrackingConfig#DEFAULT_FIELD will be used by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tailTrackIncreasingField* | Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated. The cursor will be (re)created with a query of type: tailTrackIncreasingField greater than lastValue (possibly recovered from persistent tail tracking). Can be of type Integer, Date, String, etc. NOTE: No support for dot notation at the current time, so the field should be at the top level of the document. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.mongoConnection* | A connection client provided externally | null | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mongodb.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-msv-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-msv-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f9a430c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-msv-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-msv-kafka-connector-sink]]
+= camel-msv-kafka-connector sink configuration
+
+When using camel-msv-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-msv-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-msv sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | URL to a local resource on the classpath, or a reference to lookup a bean in the Registry, or a full URL to a remote resource or resource on the file system which contains the XSD to validate against. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.failOnNullBody* | Whether to fail if no body exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullHeader* | Whether to fail if no header exists when validating against a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To validate against a header instead of the message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolver* | To use a custom LSResourceResolver. Do not use together with resourceResolverFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI. The default resource resolver factory resturns a resource resolver which can read files from the class path and file system. Do not use together with resourceResolver. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaFactory* | To use a custom javax.xml.validation.SchemaFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLanguage* | Configures the W3C XML Schema Namespace URI. | "http://www.w3.org/2001/XMLSchema" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSharedSchema* | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI | null | ConfigDef.Importance.MEDIUM
+| *camel.component.msv.schemaFactory* | To use the javax.xml.validation.SchemaFactory. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mustache-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mustache-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0520f22
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mustache-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-mustache-kafka-connector-sink]]
+= camel-mustache-kafka-connector sink configuration
+
+When using camel-mustache-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mustache-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mustache sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Character encoding of the resource content. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.endDelimiter* | Characters used to mark template code end. | "}}" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.startDelimiter* | Characters used to mark template code beginning. | "{{" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mustache.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mustache.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mustache.mustacheFactory* | To use a custom MustacheFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mvel-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mvel-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9a15b92
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mvel-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-mvel-kafka-connector-sink]]
+= camel-mvel-kafka-connector sink configuration
+
+When using camel-mvel-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mvel-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mvel sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Character encoding of the resource content. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mvel.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mvel.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mybatis-bean-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mybatis-bean-kafka-sink-connector.adoc
new file mode 100644
index 0000000..161a019
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mybatis-bean-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-mybatis-bean-kafka-connector-sink]]
+= camel-mybatis-bean-kafka-connector sink configuration
+
+When using camel-mybatis-bean-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mybatis-bean-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mybatis-bean sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.beanName* | Name of the bean with the MyBatis annotations. This can either by a type alias or a FQN class name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | Name of the method on the bean that has the SQL query to be executed. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.executorType* | The executor type to be used while executing statements. simple - executor does nothing special. reuse - executor reuses prepared statements. batch - executor reuses statements and batches updates. One of: [SIMPLE] [REUSE] [BATCH] | "SIMPLE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputHeader* | User the header value for input parameters instead of the message body. By default, inputHeader == null and the input parameters are taken from the message body. If outputHeader is set, the value is used and query parameters will be taken from the header instead of the body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. Setting outputHeader will also omit populating the default CamelMyBatisResult header since it would be the same as outputHeader all the time. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis-bean.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mybatis-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mybatis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bc051fa
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mybatis-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-mybatis-kafka-connector-sink]]
+= camel-mybatis-kafka-connector sink configuration
+
+When using camel-mybatis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mybatis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mybatis sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.statement* | The statement name in the MyBatis XML mapping file which maps to the query, insert, update or delete operation you wish to evaluate. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.executorType* | The executor type to be used while executing statements. simple - executor does nothing special. reuse - executor reuses prepared statements. batch - executor reuses statements and batches updates. One of: [SIMPLE] [REUSE] [BATCH] | "SIMPLE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputHeader* | User the header value for input parameters instead of the message body. By default, inputHeader == null and the input parameters are taken from the message body. If outputHeader is set, the value is used and query parameters will be taken from the header instead of the body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. Setting outputHeader will also omit populating the default CamelMyBatisResult header since it would be the same as outputHeader all the time. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.statementType* | Mandatory to specify for the producer to control which kind of operation to invoke. One of: [SelectOne] [SelectList] [Insert] [InsertList] [Update] [UpdateList] [Delete] [DeleteList] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-mybatis-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-mybatis-kafka-source-connector.adoc
new file mode 100644
index 0000000..b7857e7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-mybatis-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-mybatis-kafka-connector-source]]
+= camel-mybatis-kafka-connector source configuration
+
+When using camel-mybatis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-mybatis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-mybatis source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.statement* | The statement name in the MyBatis XML mapping file which maps to the query, insert, update or delete operation you wish to evaluate. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | This option is intended to split results returned by the database pool into the batches and deliver them in multiple exchanges. This integer defines the maximum messages to deliver in single exchange. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disable it. | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsume* | Statement to run after data has been processed in the route | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeEmptyResultSet* | Whether allow empty resultset to be routed to the next hop | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Enables or disables transaction. If enabled then if processing an exchange failed then the consumer breaks out processing any further exchanges to cause a rollback eager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIterator* | Process resultset individually or as a list | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processingStrategy* | To use a custom MyBatisProcessingStrategy | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.configurationUri* | Location of MyBatis xml configuration file. The default value is: SqlMapConfig.xml loaded from the classpath | "SqlMapConfig.xml" | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.mybatis.sqlSessionFactory* | To use the SqlSessionFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nagios-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nagios-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7f8753b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nagios-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-nagios-kafka-connector-sink]]
+= camel-nagios-kafka-connector sink configuration
+
+When using camel-nagios-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nagios-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nagios sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | This is the address of the Nagios host where checks should be send. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the host. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in millis. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendSync* | Whether or not to use synchronous when sending a passive check. Setting it to false will allow Camel to continue routing the message and the passive check message will be send asynchronously. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sending timeout in millis. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encryption* | To specify an encryption method. One of: [NONE] [TRIPLE_DES] [XOR] [RIJNDAEL128] [RIJNDAEL192] [RIJNDAEL256] [BLOWFISH] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to be authenticated when sending checks to Nagios. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nagios.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nagios.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nagios.configuration* | To use a shared NagiosConfiguration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nats-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nats-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c2eaa77
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nats-kafka-sink-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-nats-kafka-connector-sink]]
+= camel-nats-kafka-connector sink configuration
+
+When using camel-nats-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nats sink connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | The name of topic we want to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | Timeout for connection attempts. (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushConnection* | Define if we want to flush connection when stopping or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flushTimeout* | Set the flush timeout (in milliseconds) | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPingsOut* | maximum number of pings have not received a response allowed by the client | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnectAttempts* | Max reconnection attempts | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noEcho* | Turn off echo. If supported by the gnatsd version you are connecting to this flag will prevent the server from echoing messages back to the connection if it has subscriptions on the subject being published to. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noRandomizeServers* | Whether or not randomizing the order of servers for the connection attempts | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pedantic* | Whether or not running in pedantic mode (this affects performace) | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pingInterval* | Ping interval to be aware if connection is still alive (in milliseconds) | 120000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnect* | Whether or not using reconnection feature | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectTimeWait* | Waiting time before attempts reconnection (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestCleanupInterval* | Interval to clean up cancelled/timed out requests. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.verbose* | Whether or not running in verbose mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replySubject* | the subject to which subscribers should send response | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connection* | Reference an already instantiated connection to Nats server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nats-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nats-kafka-source-connector.adoc
new file mode 100644
index 0000000..4248da6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nats-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-nats-kafka-connector-source]]
+= camel-nats-kafka-connector source configuration
+
+When using camel-nats-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nats-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nats source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | The name of topic we want to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectionTimeout* | Timeout for connection attempts. (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flushConnection* | Define if we want to flush connection when stopping or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.flushTimeout* | Set the flush timeout (in milliseconds) | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPingsOut* | maximum number of pings have not received a response allowed by the client | 2 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnectAttempts* | Max reconnection attempts | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noEcho* | Turn off echo. If supported by the gnatsd version you are connecting to this flag will prevent the server from echoing messages back to the connection if it has subscriptions on the subject being published to. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noRandomizeServers* | Whether or not randomizing the order of servers for the connection attempts | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pedantic* | Whether or not running in pedantic mode (this affects performace) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pingInterval* | Ping interval to be aware if connection is still alive (in milliseconds) | 120000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnect* | Whether or not using reconnection feature | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectTimeWait* | Waiting time before attempts reconnection (in milliseconds) | 2000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestCleanupInterval* | Interval to clean up cancelled/timed out requests. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.verbose* | Whether or not running in verbose mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessages* | Stop receiving messages from a topic we are subscribing to after maxMessages | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | Consumer thread pool size (default is 10) | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueName* | The Queue name if we are using nats for a queue configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replyToDisabled* | Can be used to turn off sending back reply message in the consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connection* | Reference an already instantiated connection to Nats server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.servers* | URLs to one or more NAT servers. Use comma to separate URLs when specifying multiple servers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nats.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-netty-http-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-netty-http-kafka-sink-connector.adoc
new file mode 100644
index 0000000..414e709
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-netty-http-kafka-sink-connector.adoc
@@ -0,0 +1,90 @@
+// kafka-connector options: START
+[[camel-netty-http-kafka-connector-sink]]
+= camel-netty-http-kafka-connector sink configuration
+
+When using camel-netty-http-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty-http sink connector supports 64 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use which is either http, https or proxy - a consumer only option. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | The local hostname such as localhost, or 0.0.0.0 when being a consumer. The remote HTTP server hostname when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The host port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.path* | Resource path | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the option is true, the producer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the producer send all the fault response back. The consumer working in the bridge mode will skip the gzip compression and WWW URL form encoding (by adding the Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED headers to the consumed exchange). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Time to wait for a socket connection to be available. Value is in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientInitializerFactory* | To use a custom ClientInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyChannelCreation* | Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.okStatusCodeRange* | The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. The default range is 200-299 | "200-299" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolEnabled* | Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxActive* | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxIdle* | Sets the cap on the number of idle instances in the pool. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinEvictableIdle* | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinIdle* | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useRelativePath* | Sets whether to use a relative path in HTTP requests. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | To use a custom configured NettyHttpConfiguration for configuring this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Netty HttpRequest#getContent() or HttpResponset#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Netty raw stream. Also Netty will auto-close the Netty stream when the Netty HTTP server/HTTP client is done processing, which means that if the asynchronous routing engine is in use then any asynchronous thread that may continue routing the org.apache.camel.Exchange may not be able to read the Netty stream, because Netty has closed it. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.securityConfiguration* | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-netty-http-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-netty-http-kafka-source-connector.adoc
new file mode 100644
index 0000000..b4633cb
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-netty-http-kafka-source-connector.adoc
@@ -0,0 +1,106 @@
+// kafka-connector options: START
+[[camel-netty-http-kafka-connector-source]]
+= camel-netty-http-kafka-connector source configuration
+
+When using camel-netty-http-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty-http source connector supports 80 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use which is either http, https or proxy - a consumer only option. One of: [http] [https] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | The local hostname such as localhost, or 0.0.0.0 when being a consumer. The remote HTTP server hostname when using producer. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The host port number | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.path* | Resource path | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeEndpoint* | If the option is true, the producer will ignore the Exchange.HTTP_URI header, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the producer send all the fault response back. The consumer working in the bridge mode will skip the gzip compression and WWW URL form encoding (by adding the Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED headers to the consumed exchange). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not Camel should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.send503whenSuspended* | Whether to send back HTTP status code 503 when the consumer has been suspended. If the option is false then the Netty Acceptor is unbound when the consumer is suspended, so clients cannot connect anymore. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backlog* | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossCount* | When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossGroup* | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.chunkedMaxContentLength* | Value in bytes the max content length per chunked frame received on the Netty HTTP server. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compression* | Allow using gzip/deflate for compression on the Netty HTTP server if the client supports it from the HTTP headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | To disable HTTP methods on the Netty HTTP consumer. You can specify multiple separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logWarnOnBadRequest* | Whether Netty HTTP server should log a WARN if decoding the HTTP request failed and a HTTP Status 400 (bad request) is returned. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHeaders* | If this option is enabled, then during binding from Netty to Camel Message then the headers will be mapped as well (eg added as header to the Camel Message as well). You can turn off this option to disable this. The headers can still be accessed from the org.apache.camel.component.netty.http.NettyHttpMessage message with the method getHttpRequest() that returns the Netty HTTP request io.netty.handler.codec.http.HttpRequest instance. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxHeaderSize* | The maximum length of all headers. If the sum of the length of each header exceeds this value, a io.netty.handler.codec.TooLongFrameException will be raised. | 8192 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettyServerBootstrapFactory* | To use a custom NettyServerBootstrapFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettySharedHttpServer* | To use a shared Netty HTTP server. See Netty HTTP Server Example for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverClosedChannelException CaughtLogLevel* | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverExceptionCaughtLog Level* | If the server (NettyConsumer) catches an exception then its logged using this logging level. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverInitializerFactory* | To use a custom ServerInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Netty HTTP consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.urlDecodeHeaders* | If this option is enabled, then during binding from Netty to Camel Message then the header values will be URL decoded (eg %20 will be a space character. Notice this option is used by the default org.apache.camel.component.netty.http.NettyHttpBinding and therefore if you implement a custom org.apache.camel.component.netty.http.NettyHttpBinding then you would need to decode the headers accordingly to this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingExecutorService* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configuration* | To use a custom configured NettyHttpConfiguration for configuring this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Netty HttpRequest#getContent() or HttpResponset#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Netty raw stream. Also Netty will auto-close the Netty stream when the Netty HTTP server/HTTP client is done processing, which means that if the asynchronous routing engine is in use then any asynchronous thread that may continue routing the org.apache.camel.Exchange may not be able to read the Netty stream, because Netty has closed it. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.needClientAuth* | Configures whether the server needs client authentication when using SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityConfiguration* | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityOptions* | To configure NettyHttpSecurityConfiguration using key/value pairs from the map | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.executorService* | To use the given EventExecutorGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.maximumPoolSize* | Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.nettyHttpBinding* | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.securityConfiguration* | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty-http.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-netty-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-netty-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1737faa
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-netty-kafka-sink-connector.adoc
@@ -0,0 +1,86 @@
+// kafka-connector options: START
+[[camel-netty-kafka-connector-sink]]
+= camel-netty-kafka-connector sink configuration
+
+When using camel-netty-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty sink connector supports 60 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.protocol* | The protocol to use which can be tcp or udp. One of: [tcp] [udp] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.host* | The hostname. For the consumer the hostname is localhost or 0.0.0.0. For the producer the hostname is the remote host to connect to | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The host port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Time to wait for a socket connection to be available. Value is in milliseconds. | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientInitializerFactory* | To use a custom ClientInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.correlationManager* | To use a custom correlation manager to manage how request and reply messages are mapped when using request/reply with the netty producer. This should only be used if you have a way to map requests together with replies such as if there is correlation ids in both the request and reply messages. This can be used if you want to multiplex concurrent messages on the same channel (aka connection) in netty. When doing this you must have a way to correlate the request and reply messages so you can store the right reply on the inflight Camel Exchange before its continued routed. We recommend extending the TimeoutCorrelationManagerSupport when you build custom correlation managers. This provides support for timeout and other complexities you otherwise would need to implement as well. See also the producerPoolEnabled option for more details. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyChannelCreation* | Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolEnabled* | Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxActive* | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMaxIdle* | Sets the cap on the number of idle instances in the pool. | 100 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinEvictableIdle* | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerPoolMinIdle* | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.udpConnectionlessSending* | This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useByteBuf* | If the useByteBuf is true, netty producer will turn the message body into ByteBuf before sending it out. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.udpByteArrayCodec* | For UDP only. If enabled the using byte array codec instead of Java serialization protocol. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowDefaultCodec* | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoAppendDelimiter* | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoderMaxLineLength* | The max line length to use for the textline codec. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiter* | The delimiter to use for the textline codec. Possible values are LINE and NULL. One of: [LINE] [NULL] | "LINE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-netty-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-netty-kafka-source-connector.adoc
new file mode 100644
index 0000000..d12227f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-netty-kafka-source-connector.adoc
@@ -0,0 +1,94 @@
+// kafka-connector options: START
+[[camel-netty-kafka-connector-source]]
+= camel-netty-kafka-connector source configuration
+
+When using camel-netty-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-netty-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-netty source connector supports 68 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.protocol* | The protocol to use which can be tcp or udp. One of: [tcp] [udp] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | The hostname. For the consumer the hostname is localhost or 0.0.0.0. For the producer the hostname is the remote host to connect to | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The host port number | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseAddress* | Setting to facilitate socket multiplexing | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reuseChannel* | This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sync* | Setting to set endpoint as one-way or request-response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.broadcast* | Setting to choose Multicast over UDP | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientMode* | If the clientMode is true, netty consumer will connect the address as a TCP client. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnect* | Used only in clientMode in consumer, the consumer will attempt to reconnect on disconnection if this is enabled | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectInterval* | Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backlog* | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossCount* | When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bossGroup* | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnectOnNoReply* | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nettyServerBootstrapFactory* | To use a custom NettyServerBootstrapFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.networkInterface* | When using UDP then this option can be used to specify a network interface by its name, such as eth0 to join a multicast group. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noReplyLogLevel* | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverClosedChannelException CaughtLogLevel* | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverExceptionCaughtLog Level* | If the server (NettyConsumer) catches an exception then its logged using this logging level. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverInitializerFactory* | To use a custom ServerInitializerFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingExecutorService* | Whether to use ordered thread pool, to ensure events are processed orderly on the same channel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowSerializedHeaders* | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelGroup* | To use a explicit ChannelGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nativeTransport* | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.options* | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSize* | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveBufferSizePredictor* | Configures the buffer size predictor. See details at Jetty documentation and this mail thread. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendBufferSize* | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes. | 65536 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferExchange* | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.udpByteArrayCodec* | For UDP only. If enabled the using byte array codec instead of Java serialization protocol. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerCount* | When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.workerGroup* | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowDefaultCodec* | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoAppendDelimiter* | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoderMaxLineLength* | The max line length to use for the textline codec. | 1024 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delimiter* | The delimiter to use for the textline codec. Possible values are LINE and NULL. One of: [LINE] [NULL] | "LINE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.textline* | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enabledProtocols* | Which protocols to enable when using SSL | "TLSv1,TLSv1.1,TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFile* | Client side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreFormat* | Keystore format to be used for payload encryption. Defaults to JKS if not set | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyStoreResource* | Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.needClientAuth* | Configures whether the server needs client authentication when using SSL. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passphrase* | Password setting to use in order to encrypt/decrypt payloads sent using SSH | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityProvider* | Security provider to be used for payload encryption. Defaults to SunX509 if not set. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ssl* | Setting to specify whether SSL encryption is applied to this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslClientCertHeaders* | When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslHandler* | Reference to a class that could be used to return an SSL Handler | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreFile* | Server side certificate keystore to be used for encryption | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustStoreResource* | Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.executorService* | To use the given EventExecutorGroup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.maximumPoolSize* | Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.configuration* | To use the NettyConfiguration as configuration when creating endpoints. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.netty.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nitrite-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nitrite-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9c4857e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nitrite-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-nitrite-kafka-connector-sink]]
+= camel-nitrite-kafka-connector sink configuration
+
+When using camel-nitrite-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nitrite-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nitrite sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.database* | Path to database file. Will be created if not exists. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collection* | Name of Nitrite collection. Cannot be used in combination with repositoryClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repositoryClass* | Class of Nitrite ObjectRepository. Cannot be used in combination with collection option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.repositoryName* | Optional name of ObjectRepository. Can be only used in combination with repositoryClass, otherwise have no effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for Nitrite database. Required, if option username specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for Nitrite database. Database is not secured if option not specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nitrite-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nitrite-kafka-source-connector.adoc
new file mode 100644
index 0000000..9a2cf78
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nitrite-kafka-source-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-nitrite-kafka-connector-source]]
+= camel-nitrite-kafka-connector source configuration
+
+When using camel-nitrite-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nitrite-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nitrite source connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.database* | Path to database file. Will be created if not exists. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.collection* | Name of Nitrite collection. Cannot be used in combination with repositoryClass option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repositoryClass* | Class of Nitrite ObjectRepository. Cannot be used in combination with collection option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repositoryName* | Optional name of ObjectRepository. Can be only used in combination with repositoryClass, otherwise have no effect | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for Nitrite database. Required, if option username specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for Nitrite database. Database is not secured if option not specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nitrite.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nsq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nsq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0254ba5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nsq-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-nsq-kafka-connector-sink]]
+= camel-nsq-kafka-connector sink configuration
+
+When using camel-nsq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nsq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nsq sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | The NSQ topic | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userAgent* | A String to identify the kind of client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | The port of the nsqd server | 4150 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-nsq-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-nsq-kafka-source-connector.adoc
new file mode 100644
index 0000000..99469b7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-nsq-kafka-source-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-nsq-kafka-connector-source]]
+= camel-nsq-kafka-connector source configuration
+
+When using camel-nsq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-nsq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-nsq source connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | The NSQ topic | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userAgent* | A String to identify the kind of client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoFinish* | Automatically finish the NSQ Message when it is retrieved from the queue and before the Exchange is processed | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channel* | The NSQ channel | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lookupInterval* | The lookup interval | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lookupServerPort* | The NSQ lookup server port | 4161 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageTimeout* | The NSQ consumer timeout period for messages retrieved from the queue. A value of -1 is the server default | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | Consumer pool size | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requeueInterval* | The requeue interval in milliseconds. A value of -1 is the server default | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Set secure option indicating TLS is required | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.servers* | The hostnames of one or more nsqlookupd servers (consumer) or nsqd servers (producer). | null | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.nsq.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-olingo2-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-olingo2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..501589c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-olingo2-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-olingo2-kafka-connector-sink]]
+= camel-olingo2-kafka-connector sink configuration
+
+When using camel-olingo2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo2 sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-olingo2-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-olingo2-kafka-source-connector.adoc
new file mode 100644
index 0000000..8157bcd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-olingo2-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-olingo2-kafka-connector-source]]
+= camel-olingo2-kafka-connector source configuration
+
+When using camel-olingo2-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo2 source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitResult* | For endpoints that return an array or collection, a consumer endpoint will map every element to distinct messages, unless splitResult is set to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo2.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-olingo4-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-olingo4-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d604fe0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-olingo4-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-olingo4-kafka-connector-sink]]
+= camel-olingo4-kafka-connector sink configuration
+
+When using camel-olingo4-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo4-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo4 sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-olingo4-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-olingo4-kafka-source-connector.adoc
new file mode 100644
index 0000000..0602c36
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-olingo4-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-olingo4-kafka-connector-source]]
+= camel-olingo4-kafka-connector source configuration
+
+When using camel-olingo4-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-olingo4-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-olingo4 source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [DEFAULT] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectTimeout* | HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8 | "application/json;charset=utf-8" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterAlreadySeen* | Set this to true to filter out results that have already been communicated by this component. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpAsyncClientBuilder* | Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClientBuilder* | Custom HTTP client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext. Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpHeaders* | Custom HTTP headers to inject into every request, this could include OAuth tokens, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxy* | HTTP proxy server configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceUri* | Target OData service base URI, e.g. \http://services.odata.org/OData/OData.svc | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketTimeout* | HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds) | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitResult* | For endpoints that return an array or collection, a consumer endpoint will map every element to distinct messages, unless splitResult is set to false. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.olingo4.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openshift-build-configs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openshift-build-configs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6b4b24f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openshift-build-configs-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-openshift-build-configs-kafka-connector-sink]]
+= camel-openshift-build-configs-kafka-connector sink configuration
+
+When using camel-openshift-build-configs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openshift-build-configs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openshift-build-configs sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-build-configs.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-build-configs.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openshift-builds-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openshift-builds-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fd4f5d6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openshift-builds-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-openshift-builds-kafka-connector-sink]]
+= camel-openshift-builds-kafka-connector sink configuration
+
+When using camel-openshift-builds-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openshift-builds-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openshift-builds sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.masterUrl* | Kubernetes Master url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | The Kubernetes API Version to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dnsDomain* | The dns domain, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.kubernetesClient* | Default KubernetesClient to use if provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Producer operation to do on Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portName* | The port name, used for ServiceCall EIP | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portProtocol* | The port protocol, used for ServiceCall EIP | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in milliseconds to use when making requests to the Kubernetes API server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertData* | The CA Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.caCertFile* | The CA Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertData* | The Client Cert Data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientCertFile* | The Client Cert File | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyAlgo* | The Key Algorithm used by the client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyData* | The Client Key data | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyFile* | The Client Key file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientKeyPassphrase* | The Client Key Passphrase | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The Auth Token | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustCerts* | Define if the certs we used are trusted anyway or not | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to connect to Kubernetes | null | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-builds.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openshift-builds.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openstack-cinder-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openstack-cinder-kafka-sink-connector.adoc
new file mode 100644
index 0000000..152c80e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openstack-cinder-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-cinder-kafka-connector-sink]]
+= camel-openstack-cinder-kafka-connector sink configuration
+
+When using camel-openstack-cinder-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-cinder-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-cinder sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Cinder subsystem One of: [snapshots] [volumes] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-cinder.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-cinder.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openstack-glance-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openstack-glance-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4e42e3f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openstack-glance-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-openstack-glance-kafka-connector-sink]]
+= camel-openstack-glance-kafka-connector sink configuration
+
+When using camel-openstack-glance-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-glance-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-glance sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-glance.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-glance.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openstack-keystone-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openstack-keystone-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d033106
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openstack-keystone-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-openstack-keystone-kafka-connector-sink]]
+= camel-openstack-keystone-kafka-connector sink configuration
+
+When using camel-openstack-keystone-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-keystone-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-keystone sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Keystone subsystem One of: [regions] [domains] [projects] [users] [groups] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-keystone.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-keystone.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openstack-neutron-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openstack-neutron-kafka-sink-connector.adoc
new file mode 100644
index 0000000..57a4fb7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openstack-neutron-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-neutron-kafka-connector-sink]]
+= camel-openstack-neutron-kafka-connector sink configuration
+
+When using camel-openstack-neutron-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-neutron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-neutron sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Neutron subsystem One of: [networks] [subnets] [ports] [routers] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-neutron.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-neutron.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openstack-nova-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openstack-nova-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2159f12
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openstack-nova-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-nova-kafka-connector-sink]]
+= camel-openstack-nova-kafka-connector sink configuration
+
+When using camel-openstack-nova-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-nova-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-nova sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Nova subsystem One of: [flavors] [servers] [keypairs] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-nova.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-nova.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-openstack-swift-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-openstack-swift-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0b2ae50
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-openstack-swift-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-openstack-swift-kafka-connector-sink]]
+= camel-openstack-swift-kafka-connector sink configuration
+
+When using camel-openstack-swift-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-openstack-swift-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-openstack-swift sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | OpenStack host url | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.apiVersion* | OpenStack API version One of: [V2] [V3] | "V3" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.config* | OpenStack configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.domain* | Authentication domain | "default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to do | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | OpenStack password | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.project* | The project ID | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.subsystem* | OpenStack Swift subsystem One of: [objects] [containers] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | OpenStack username | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-swift.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.openstack-swift.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-optaplanner-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-optaplanner-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7e92ab0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-optaplanner-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-optaplanner-kafka-connector-sink]]
+= camel-optaplanner-kafka-connector sink configuration
+
+When using camel-optaplanner-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-optaplanner-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-optaplanner sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.configFile* | Specifies the location to the solver file | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.solverId* | Specifies the solverId to user for the solver instance key | "DEFAULT_SOLVER" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.async* | Specifies to perform operations in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.threadPoolSize* | Specifies the thread pool size to use when async is true | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-optaplanner-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-optaplanner-kafka-source-connector.adoc
new file mode 100644
index 0000000..260b80c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-optaplanner-kafka-source-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-optaplanner-kafka-connector-source]]
+= camel-optaplanner-kafka-connector source configuration
+
+When using camel-optaplanner-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-optaplanner-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-optaplanner source connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.configFile* | Specifies the location to the solver file | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.solverId* | Specifies the solverId to user for the solver instance key | "DEFAULT_SOLVER" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.optaplanner.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-paho-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-paho-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8cfaf3e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-paho-kafka-sink-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-paho-kafka-connector-sink]]
+= camel-paho-kafka-connector sink configuration
+
+When using camel-paho-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-paho-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-paho sink connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.topic* | Name of the topic | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.automaticReconnect* | Sets whether the client will automatically attempt to reconnect to the server if the connection is lost. If set to false, the client will not attempt to automatically reconnect to the server in the event that the connection is lost. If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server. It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay will double until it is at 2 minutes at which point the delay will stay at 2 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.brokerUrl* | The URL of the MQTT broker. | "tcp://localhost:1883" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cleanSession* | Sets whether the client and server should remember state across restarts and reconnects. If set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained: Message delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted. The server will treat a subscription as durable. If set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means Message delivery to the specified QOS cannot be maintained if the client, server or connection are restarted The server will treat a subscription as non-durable | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | MQTT client identifier. The identifier must be unique. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Sets the connection timeout value. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. | 30 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filePersistenceDirectory* | Base directory used by file persistence. Will by default use user directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAliveInterval* | Sets the keep alive interval. This value, measured in seconds, defines the maximum time interval between messages sent or received. It enables the client to detect if the server is no longer available, without having to wait for the TCP/IP timeout. The client will ensure that at least one message travels across the network within each keep alive period. In the absence of a data-related message during the time period, the client sends a very small ping message, which the server will acknowledge. A value of 0 disables keepalive processing in the client. The default value is 60 seconds | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxInflight* | Sets the max inflight. please increase this value in a high traffic environment. The default value is 10 | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnectDelay* | Get the maximum time (in millis) to wait between reconnects | 128000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mqttVersion* | Sets the MQTT version. The default action is to connect with version 3.1.1, and to fall back to 3.1 if that fails. Version 3.1.1 or 3.1 can be selected specifically, with no fall back, by using the MQTT_VERSION_3_1_1 or MQTT_VERSION_3_1 options respectively. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistence* | Client persistence to be used - memory or file. One of: [FILE] [MEMORY] | "MEMORY" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.qos* | Client quality of service level (0-2). | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retained* | Retain option | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverURIs* | Set a list of one or more serverURIs the client may connect to. Multiple servers can be separated by comma. Each serverURI specifies the address of a server that the client may connect to. Two types of connection are supported tcp:// for a TCP connection and ssl:// for a TCP connection secured by SSL/TLS. For example: tcp://localhost:1883 ssl://localhost:8883 If the port is not specified, it will default to 1883 for tcp:// URIs, and 8883 for ssl:// URIs. If serverURIs is set then it overrides the serverURI parameter passed in on the constructor of the MQTT client. When an attempt to connect is initiated the client will start with the first serverURI in the list and work through the list until a connection is established with a server. If a connection cannot be made to any of the servers then the connect attempt fails. Specifying a list of servers that a client may connect to has several uses: High Availability and reliable message delivery Some MQTT servers support a high availability feature where two or more equal MQTT servers share state. An MQTT client can connect to any of the equal servers and be assured that messages are reliably delivered and durable subscriptions are maintained no matter which server the client connects to. The cleansession flag must be set to false if durable subscriptions and/or reliable message delivery is required. Hunt List A set of servers may be specified that are not equal (as in the high availability option). As no state is shared across the servers reliable message delivery and durable subscriptions are not valid. The cleansession flag must be set to true if the hunt list mode is used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willPayload* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willQos* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willRetained* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.willTopic* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.client* | To use an existing mqtt client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.customWebSocketHeaders* | Sets the Custom WebSocket Headers for the WebSocket Connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.executorServiceTimeout* | Set the time in seconds that the executor service should wait when terminating before forcefully terminating. It is not recommended to change this value unless you are absolutely sure that you need to. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpsHostnameVerification Enabled* | Whether SSL HostnameVerifier is enabled or not. The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.socketFactory* | Sets the SocketFactory to use. This allows an application to apply its own policies around the creation of network sockets. If using an SSL connection, an SSLSocketFactory can be used to supply application-specific security settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslClientProps* | Sets the SSL properties for the connection. Note that these properties are only valid if an implementation of the Java Secure Socket Extensions (JSSE) is available. These properties are not used if a custom SocketFactory has been set. The following properties can be used: com.ibm.ssl.protocol One of: SSL, SSLv3, TLS, TLSv1, SSL_TLS. com.ibm.ssl.contextProvider Underlying JSSE provider. For example IBMJSSE2 or SunJSSE com.ibm.ssl.keyStore The name of the file that contains the KeyStore object that you want the KeyManager to use. For example /mydir/etc/key.p12 com.ibm.ssl.keyStorePassword The password for the KeyStore object that you want the KeyManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.keyStoreType Type of key store, for example PKCS12, JKS, or JCEKS. com.ibm.ssl.keyStoreProvider Key store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.trustStore The name of the file that contains the KeyStore object that you want the TrustManager to use. com.ibm.ssl.trustStorePassword The password for the TrustStore object that you want the TrustManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.trustStoreType The type of KeyStore object that you want the default TrustManager to use. Same possible values as keyStoreType. com.ibm.ssl.trustStoreProvider Trust store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.enabledCipherSuites A list of which ciphers are enabled. Values are dependent on the provider, for example: SSL_RSA_WITH_AES_128_CBC_SHA;SSL_RSA_WITH_3DES_EDE_CBC_SHA. com.ibm.ssl.keyManager Sets the algorithm that will be used to instantiate a KeyManagerFactory object instead of using the default algorithm available in the platform. Example values: IbmX509 or IBMJ9X509. com.ibm.ssl.trustManager Sets the algorithm that will be used to instantiate a TrustManagerFactory object instead of using the default algorithm available in the platform. Example values: PKIX or IBMJ9X509. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslHostnameVerifier* | Sets the HostnameVerifier for the SSL connection. Note that it will be used after handshake on a connection and you should do actions by yourself when hostname is verified error. There is no default HostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | Username to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.brokerUrl* | The URL of the MQTT broker. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.configuration* | To use the shared Paho configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.client* | To use a shared Paho client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-paho-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-paho-kafka-source-connector.adoc
new file mode 100644
index 0000000..15cad1a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-paho-kafka-source-connector.adoc
@@ -0,0 +1,64 @@
+// kafka-connector options: START
+[[camel-paho-kafka-connector-source]]
+= camel-paho-kafka-connector source configuration
+
+When using camel-paho-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-paho-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-paho source connector supports 38 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topic* | Name of the topic | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.automaticReconnect* | Sets whether the client will automatically attempt to reconnect to the server if the connection is lost. If set to false, the client will not attempt to automatically reconnect to the server in the event that the connection is lost. If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server. It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay will double until it is at 2 minutes at which point the delay will stay at 2 minutes. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.brokerUrl* | The URL of the MQTT broker. | "tcp://localhost:1883" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cleanSession* | Sets whether the client and server should remember state across restarts and reconnects. If set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained: Message delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted. The server will treat a subscription as durable. If set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means Message delivery to the specified QOS cannot be maintained if the client, server or connection are restarted The server will treat a subscription as non-durable | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientId* | MQTT client identifier. The identifier must be unique. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Sets the connection timeout value. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. | 30 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filePersistenceDirectory* | Base directory used by file persistence. Will by default use user directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAliveInterval* | Sets the keep alive interval. This value, measured in seconds, defines the maximum time interval between messages sent or received. It enables the client to detect if the server is no longer available, without having to wait for the TCP/IP timeout. The client will ensure that at least one message travels across the network within each keep alive period. In the absence of a data-related message during the time period, the client sends a very small ping message, which the server will acknowledge. A value of 0 disables keepalive processing in the client. The default value is 60 seconds | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInflight* | Sets the max inflight. please increase this value in a high traffic environment. The default value is 10 | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnectDelay* | Get the maximum time (in millis) to wait between reconnects | 128000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mqttVersion* | Sets the MQTT version. The default action is to connect with version 3.1.1, and to fall back to 3.1 if that fails. Version 3.1.1 or 3.1 can be selected specifically, with no fall back, by using the MQTT_VERSION_3_1_1 or MQTT_VERSION_3_1 options respectively. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.persistence* | Client persistence to be used - memory or file. One of: [FILE] [MEMORY] | "MEMORY" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.qos* | Client quality of service level (0-2). | 2 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retained* | Retain option | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverURIs* | Set a list of one or more serverURIs the client may connect to. Multiple servers can be separated by comma. Each serverURI specifies the address of a server that the client may connect to. Two types of connection are supported tcp:// for a TCP connection and ssl:// for a TCP connection secured by SSL/TLS. For example: tcp://localhost:1883 ssl://localhost:8883 If the port is not specified, it will default to 1883 for tcp:// URIs, and 8883 for ssl:// URIs. If serverURIs is set then it overrides the serverURI parameter passed in on the constructor of the MQTT client. When an attempt to connect is initiated the client will start with the first serverURI in the list and work through the list until a connection is established with a server. If a connection cannot be made to any of the servers then the connect attempt fails. Specifying a list of servers that a client may connect to has several uses: High Availability and reliable message delivery Some MQTT servers support a high availability feature where two or more equal MQTT servers share state. An MQTT client can connect to any of the equal servers and be assured that messages are reliably delivered and durable subscriptions are maintained no matter which server the client connects to. The cleansession flag must be set to false if durable subscriptions and/or reliable message delivery is required. Hunt List A set of servers may be specified that are not equal (as in the high availability option). As no state is shared across the servers reliable message delivery and durable subscriptions are not valid. The cleansession flag must be set to true if the hunt list mode is used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willPayload* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willQos* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willRetained* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.willTopic* | Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.client* | To use an existing mqtt client | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.customWebSocketHeaders* | Sets the Custom WebSocket Headers for the WebSocket Connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.executorServiceTimeout* | Set the time in seconds that the executor service should wait when terminating before forcefully terminating. It is not recommended to change this value unless you are absolutely sure that you need to. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpsHostnameVerification Enabled* | Whether SSL HostnameVerifier is enabled or not. The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.socketFactory* | Sets the SocketFactory to use. This allows an application to apply its own policies around the creation of network sockets. If using an SSL connection, an SSLSocketFactory can be used to supply application-specific security settings. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslClientProps* | Sets the SSL properties for the connection. Note that these properties are only valid if an implementation of the Java Secure Socket Extensions (JSSE) is available. These properties are not used if a custom SocketFactory has been set. The following properties can be used: com.ibm.ssl.protocol One of: SSL, SSLv3, TLS, TLSv1, SSL_TLS. com.ibm.ssl.contextProvider Underlying JSSE provider. For example IBMJSSE2 or SunJSSE com.ibm.ssl.keyStore The name of the file that contains the KeyStore object that you want the KeyManager to use. For example /mydir/etc/key.p12 com.ibm.ssl.keyStorePassword The password for the KeyStore object that you want the KeyManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.keyStoreType Type of key store, for example PKCS12, JKS, or JCEKS. com.ibm.ssl.keyStoreProvider Key store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.trustStore The name of the file that contains the KeyStore object that you want the TrustManager to use. com.ibm.ssl.trustStorePassword The password for the TrustStore object that you want the TrustManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.trustStoreType The type of KeyStore object that you want the default TrustManager to use. Same possible values as keyStoreType. com.ibm.ssl.trustStoreProvider Trust store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.enabledCipherSuites A list of which ciphers are enabled. Values are dependent on the provider, for example: SSL_RSA_WITH_AES_128_CBC_SHA;SSL_RSA_WITH_3DES_EDE_CBC_SHA. com.ibm.ssl.keyManager Sets the algorithm that will be used to instantiate a KeyManagerFactory object instead of using the default algorithm available in the platform. Example values: IbmX509 or IBMJ9X509. com.ibm.ssl.trustManager Sets the algorithm that will be used to instantiate a TrustManagerFactory object instead of using the default algorithm available in the platform. Example values: PKIX or IBMJ9X509. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslHostnameVerifier* | Sets the HostnameVerifier for the SSL connection. Note that it will be used after handshake on a connection and you should do actions by yourself when hostname is verified error. There is no default HostnameVerifier | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userName* | Username to be used for authentication against the MQTT broker | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.brokerUrl* | The URL of the MQTT broker. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.configuration* | To use the shared Paho configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paho.client* | To use a shared Paho client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-paxlogging-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-paxlogging-kafka-source-connector.adoc
new file mode 100644
index 0000000..cec2e41
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-paxlogging-kafka-source-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-paxlogging-kafka-connector-source]]
+= camel-paxlogging-kafka-connector source configuration
+
+When using camel-paxlogging-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-paxlogging-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-paxlogging source connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.appender* | Appender is the name of the pax appender that need to be configured in the PaxLogging service configuration. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paxlogging.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.paxlogging.bundleContext* | The OSGi BundleContext is automatic injected by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.component.paxlogging.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pdf-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pdf-kafka-sink-connector.adoc
new file mode 100644
index 0000000..465ca92
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pdf-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-pdf-kafka-connector-sink]]
+= camel-pdf-kafka-connector sink configuration
+
+When using camel-pdf-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pdf-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pdf sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Operation type One of: [create] [append] [extractText] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.font* | Font One of: [Courier] [Courier-Bold] [Courier-Oblique] [Courier-BoldOblique] [Helvetica] [Helvetica-Bold] [Helvetica-Oblique] [Helvetica-BoldOblique] [Times-Roman] [Times-Bold] [Times-Italic] [Times-BoldItalic] [Symbol] [ZapfDingbats] | "Helvetica" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fontSize* | Font size in pixels | 14F | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginBottom* | Margin bottom in pixels | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginLeft* | Margin left in pixels | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginRight* | Margin right in pixels | 40 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.marginTop* | Margin top in pixels | 20 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pageSize* | Page size One of: [LETTER] [LEGAL] [A0] [A1] [A2] [A3] [A4] [A5] [A6] | "A4" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.textProcessingFactory* | Text processing to use. autoFormatting: Text is getting sliced by words, then max amount of words that fits in the line will be written into pdf document. With this strategy all words that doesn't fit in the line will be moved to the new line. lineTermination: Builds set of classes for line-termination writing strategy. Text getting sliced by line termination symbol and then it will be written regardless it fits in the line or not. One of: [autoFormatting] [lineTermination] | "lineTermination" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pdf.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pdf.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pg-replication-slot-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pg-replication-slot-kafka-source-connector.adoc
new file mode 100644
index 0000000..87d61c0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pg-replication-slot-kafka-source-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-pg-replication-slot-kafka-connector-source]]
+= camel-pg-replication-slot-kafka-connector source configuration
+
+When using camel-pg-replication-slot-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pg-replication-slot-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pg-replication-slot source connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.slot* | Replication Slot name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.host* | Postgres host | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Postgres port | "5432" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.database* | Postgres database name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.outputPlugin* | Output plugin name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.password* | Postgres password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | Postgres user | "postgres" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreateSlot* | Auto create slot if it does not exist | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.slotOptions* | Slot options to be passed to the output plugin. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.statusInterval* | Specifies the number of seconds between status packets sent back to Postgres server. | "10" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.pg-replication-slot.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pg-replication-slot.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pgevent-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pgevent-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ef4c597
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pgevent-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-pgevent-kafka-connector-sink]]
+= camel-pgevent-kafka-connector sink configuration
+
+When using camel-pgevent-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pgevent-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pgevent sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | To connect using hostname and port to the database. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | To connect using hostname and port to the database. | "5432" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.database* | The database name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.channel* | The channel name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.datasource* | To connect using the given javax.sql.DataSource instead of using hostname and port. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pass* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | Username for login | "postgres" | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pgevent-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pgevent-kafka-source-connector.adoc
new file mode 100644
index 0000000..6561e19
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pgevent-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-pgevent-kafka-connector-source]]
+= camel-pgevent-kafka-connector source configuration
+
+When using camel-pgevent-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pgevent-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pgevent source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | To connect using hostname and port to the database. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | To connect using hostname and port to the database. | "5432" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.database* | The database name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.channel* | The channel name | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.datasource* | To connect using the given javax.sql.DataSource instead of using hostname and port. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pass* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | Username for login | "postgres" | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pgevent.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-platform-http-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-platform-http-kafka-source-connector.adoc
new file mode 100644
index 0000000..9555b6c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-platform-http-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-platform-http-kafka-connector-source]]
+= camel-platform-http-kafka-connector source configuration
+
+When using camel-platform-http-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-platform-http-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-platform-http source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The path under which this endpoint serves the HTTP requests | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumes* | The content type this endpoint accepts as an input, such as application/xml or application/json. null or &#42;/&#42; mean no restriction. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | A comma separated list of HTTP methods to serve, e.g. GET,POST . If no methods are specified, all methods will be served. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.produces* | The content type this endpoint produces, such as application/xml or application/json. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileNameExtWhitelist* | A comma or whitespace separated list of file extensions. Uploads having these extensions will be stored locally. Null value or asterisk () will allow all files. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter headers to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.platformHttpEngine* | An HTTP Server engine implementation to serve the requests of this endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.platform-http.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.platform-http.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pop3-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pop3-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2f4868b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pop3-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-pop3-kafka-connector-sink]]
+= camel-pop3-kafka-connector sink configuration
+
+When using camel-pop3-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3 sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pop3-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pop3-kafka-source-connector.adoc
new file mode 100644
index 0000000..40c26e4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pop3-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-pop3-kafka-connector-source]]
+= camel-pop3-kafka-connector source configuration
+
+When using camel-pop3-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3 source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pop3s-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pop3s-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f31f00a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pop3s-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-pop3s-kafka-connector-sink]]
+= camel-pop3s-kafka-connector sink configuration
+
+When using camel-pop3s-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3s-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3s sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pop3s-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pop3s-kafka-source-connector.adoc
new file mode 100644
index 0000000..8307833
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pop3s-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-pop3s-kafka-connector-source]]
+= camel-pop3s-kafka-connector source configuration
+
+When using camel-pop3s-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pop3s-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pop3s source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pop3s.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pubnub-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pubnub-kafka-sink-connector.adoc
new file mode 100644
index 0000000..23c74ff
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pubnub-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-pubnub-kafka-connector-sink]]
+= camel-pubnub-kafka-connector sink configuration
+
+When using camel-pubnub-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pubnub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pubnub sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.channel* | The channel used for subscribing/publishing events | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.uuid* | UUID to be used as a device identifier, a default UUID is generated if not passed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The operation to perform. PUBLISH: Default. Send a message to all subscribers of a channel. FIRE: allows the client to send a message to BLOCKS Event Handlers. These messages will go directly to any Event Handlers registered on the channel. HERENOW: Obtain information about the current state of a channel including a list of unique user-ids currently subscribed to the channel and the total occupancy count. WHERENOW: Obtain information about the current list of channels to which a uuid is subscribed to. GETSTATE: Used to get key/value pairs specific to a subscriber uuid. State information is supplied as a JSON object of key/value pairs SETSTATE: Used to set key/value pairs specific to a subscriber uuid GETHISTORY: Fetches historical messages of a channel. One of: [HERENOW] [WHERENOW] [GETSTATE] [SETSTATE] [GETHISTORY] [PUBLISH] [FIRE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubnub* | Reference to a Pubnub client in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authKey* | If Access Manager is utilized, client will use this authKey in all restricted requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cipherKey* | If cipher is passed, all communications to/from PubNub will be encrypted. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publishKey* | The publish key obtained from your PubNub account. Required when publishing messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secretKey* | The secret key used for message signing. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secure* | Use SSL for secure transmission. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subscribeKey* | The subscribe key obtained from your PubNub account. Required when subscribing to channels or listening for presence events | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pubnub-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pubnub-kafka-source-connector.adoc
new file mode 100644
index 0000000..47acfd0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pubnub-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-pubnub-kafka-connector-source]]
+= camel-pubnub-kafka-connector source configuration
+
+When using camel-pubnub-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pubnub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pubnub source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.channel* | The channel used for subscribing/publishing events | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.uuid* | UUID to be used as a device identifier, a default UUID is generated if not passed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.withPresence* | Also subscribe to related presence information | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubnub* | Reference to a Pubnub client in the registry. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authKey* | If Access Manager is utilized, client will use this authKey in all restricted requests. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cipherKey* | If cipher is passed, all communications to/from PubNub will be encrypted. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.publishKey* | The publish key obtained from your PubNub account. Required when publishing messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secretKey* | The secret key used for message signing. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.secure* | Use SSL for secure transmission. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscribeKey* | The subscribe key obtained from your PubNub account. Required when subscribing to channels or listening for presence events | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pubnub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pulsar-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pulsar-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d802345
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pulsar-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-pulsar-kafka-connector-sink]]
+= camel-pulsar-kafka-connector sink configuration
+
+When using camel-pulsar-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pulsar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pulsar sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.persistence* | Whether the topic is persistent or non-persistent One of: [persistent] [non-persistent] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.tenant* | The tenant | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.namespace* | The namespace | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.topic* | The topic | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batchingEnabled* | Control whether automatic batching of messages is enabled for the producer. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batchingMaxMessages* | The maximum size to batch messages. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batchingMaxPublishDelayMicros* | The maximum time period within which the messages sent will be batched if batchingEnabled is true. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockIfQueueFull* | Whether to block the producing thread if pending messages queue is full or to throw a ProducerQueueIsFullError | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compressionType* | Compression type to use One of: [NONE] [LZ4] [ZLIB] [ZSTD] [SNAPPY] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialSequenceId* | The first message published will have a sequence Id of initialSequenceId 1. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPendingMessages* | Size of the pending massages queue. When the queue is full, by default, any further sends will fail unless blockIfQueueFull=true | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxPendingMessagesAcross Partitions* | The maximum number of pending messages for partitioned topics. The maxPendingMessages value will be reduced if (number of partitions maxPendingMessages) exceeds this value. Partitioned topics have a pending message queue for each partition. | 50000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRouter* | Custom Message Router to use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageRoutingMode* | Message Routing Mode to use One of: [SinglePartition] [RoundRobinPartition] [CustomPartition] | "RoundRobinPartition" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerName* | Name of the producer. If unset, lets Pulsar select a unique identifier. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeoutMs* | Send timeout in milliseconds | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.autoConfiguration* | The pulsar auto configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.pulsarClient* | The pulsar client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-pulsar-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-pulsar-kafka-source-connector.adoc
new file mode 100644
index 0000000..ad9a8f8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-pulsar-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-pulsar-kafka-connector-source]]
+= camel-pulsar-kafka-connector source configuration
+
+When using camel-pulsar-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-pulsar-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-pulsar source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.persistence* | Whether the topic is persistent or non-persistent One of: [persistent] [non-persistent] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.tenant* | The tenant | null | ConfigDef.Importance.HIGH
+| *camel.source.path.namespace* | The namespace | null | ConfigDef.Importance.HIGH
+| *camel.source.path.topic* | The topic | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.ackGroupTimeMillis* | Group the consumer acknowledgments for the specified time in milliseconds - defaults to 100 | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ackTimeoutMillis* | Timeout for unacknowledged messages in milliseconds - defaults to 10000 | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowManualAcknowledgement* | Whether to allow manual message acknowledgements. If this option is enabled, then messages are not immediately acknowledged after being consumed. Instead, an instance of PulsarMessageReceipt is stored as a header on the org.apache.camel.Exchange. Messages can then be acknowledged using PulsarMessageReceipt at any time before the ackTimeout occurs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerName* | Name of the consumer when subscription is EXCLUSIVE | "sole-consumer" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerNamePrefix* | Prefix to add to consumer names when a SHARED or FAILOVER subscription is used | "cons" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerQueueSize* | Size of the consumer queue - defaults to 10 | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfConsumers* | Number of consumers - defaults to 1 | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionInitialPosition* | Control the initial position in the topic of a newly created subscription. Default is latest message. One of: [EARLIEST] [LATEST] | "LATEST" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionName* | Name of the subscription to use | "subs" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionType* | Type of the subscription EXCLUSIVESHAREDFAILOVER, defaults to EXCLUSIVE One of: [EXCLUSIVE] [SHARED] [FAILOVER] | "EXCLUSIVE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.allowManualAcknowledgement* | Whether to allow manual message acknowledgements. If this option is enabled, then messages are not immediately acknowledged after being consumed. Instead, an instance of PulsarMessageReceipt is stored as a header on the org.apache.camel.Exchange. Messages can then be acknowledged using PulsarMessageReceipt at any time before the ackTimeout occurs. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.pulsarMessageReceiptFactory* | Provide a factory to create an alternate implementation of PulsarMessageReceipt. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.autoConfiguration* | The pulsar auto configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.pulsar.pulsarClient* | The pulsar client | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-quartz-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-quartz-kafka-source-connector.adoc
new file mode 100644
index 0000000..894b11b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-quartz-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-quartz-kafka-connector-source]]
+= camel-quartz-kafka-connector source configuration
+
+When using camel-quartz-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-quartz-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-quartz source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.groupName* | The quartz group name to use. The combination of group name and timer name should be unique. | "Camel" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.triggerName* | The quartz timer name to use. The combination of group name and timer name should be unique. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cron* | Specifies a cron expression to define when to trigger. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deleteJob* | If set to true, then the trigger automatically delete when route stop. Else if set to false, it will remain in scheduler. When set to false, it will also mean user may reuse pre-configured trigger with camel Uri. Just ensure the names match. Notice you cannot have both deleteJob and pauseJob set to true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableJob* | Whether or not the job should remain stored after it is orphaned (no triggers point to it). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pauseJob* | If set to true, then the trigger automatically pauses when route stop. Else if set to false, it will remain in scheduler. When set to false, it will also mean user may reuse pre-configured trigger with camel Uri. Just ensure the names match. Notice you cannot have both deleteJob and pauseJob set to true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoverableJob* | Instructs the scheduler whether or not the job should be re-executed if a 'recovery' or 'fail-over' situation is encountered. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stateful* | Uses a Quartz PersistJobDataAfterExecution and DisallowConcurrentExecution instead of the default job. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.customCalendar* | Specifies a custom calendar to avoid specific range of date | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobParameters* | To configure additional options on the job. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefixJobNameWithEndpointId* | Whether the job name should be prefixed with endpoint id | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.triggerParameters* | To configure additional options on the trigger. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingFixedCamelContextName* | If it is true, JobDataMap uses the CamelContext name directly to reference the CamelContext, if it is false, JobDataMap uses use the CamelContext management name which could be changed during the deploy time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoStartScheduler* | Whether or not the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireNow* | If it is true will fire the trigger when the route is start when using SimpleTrigger. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startDelayedSeconds* | Seconds to wait before starting the quartz scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.triggerStartDelay* | In case of scheduler has already started, we want the trigger start slightly after current time to ensure endpoint is fully started before the job kicks in. | 500L | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.enableJmx* | Whether to enable Quartz JMX which allows to manage the Quartz scheduler from JMX. This options is default true | true | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.prefixInstanceName* | Whether to prefix the Quartz Scheduler instance name with the CamelContext name. This is enabled by default, to let each CamelContext use its own Quartz scheduler instance by default. You can set this option to false to reuse Quartz scheduler instances between multiple CamelContext's. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.prefixJobNameWithEndpointId* | Whether to prefix the quartz job with the endpoint id. This option is default false. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.properties* | Properties to configure the Quartz scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.propertiesFile* | File name of the properties to load from the classpath | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.propertiesRef* | References to an existing Properties or Map to lookup in the registry to use for configuring quartz. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.scheduler* | To use the custom configured Quartz scheduler, instead of creating a new Scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.schedulerFactory* | To use the custom SchedulerFactory which is used to create the Scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.autoStartScheduler* | Whether or not the scheduler should be auto started. This options is default true | true | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.interruptJobsOnShutdown* | Whether to interrupt jobs on shutdown which forces the scheduler to shutdown quicker and attempt to interrupt any running jobs. If this is enabled then any running jobs can fail due to being interrupted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quartz.startDelayedSeconds* | Seconds to wait before starting the quartz scheduler. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-quickfix-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-quickfix-kafka-sink-connector.adoc
new file mode 100644
index 0000000..011d030
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-quickfix-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-quickfix-kafka-connector-sink]]
+= camel-quickfix-kafka-connector sink configuration
+
+When using camel-quickfix-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-quickfix-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-quickfix sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.configurationName* | The configFile is the name of the QuickFIX/J configuration to use for the FIX engine (located as a resource found in your classpath). | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyCreateEngine* | This option allows to create QuickFIX/J engine on demand. Value true means the engine is started when first message is send or there's consumer configured in route definition. When false value is used, the engine is started at the endpoint creation. When this parameter is missing, the value of component's property lazyCreateEngines is being used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionID* | The optional sessionID identifies a specific FIX session. The format of the sessionID is: (BeginString):(SenderCompID)/(SenderSubID)/(SenderLocationID)-(TargetCompID)/(TargetSubID)/(TargetLocationID) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.configurations* | To use the given map of pre configured QuickFix configurations mapped to the key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.lazyCreateEngines* | If set to true, the engines will be created and started when needed (when first message is send) | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.logFactory* | To use the given LogFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageFactory* | To use the given MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageStoreFactory* | To use the given MessageStoreFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-quickfix-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-quickfix-kafka-source-connector.adoc
new file mode 100644
index 0000000..e043c5b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-quickfix-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-quickfix-kafka-connector-source]]
+= camel-quickfix-kafka-connector source configuration
+
+When using camel-quickfix-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-quickfix-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-quickfix source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.configurationName* | The configFile is the name of the QuickFIX/J configuration to use for the FIX engine (located as a resource found in your classpath). | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.lazyCreateEngine* | This option allows to create QuickFIX/J engine on demand. Value true means the engine is started when first message is send or there's consumer configured in route definition. When false value is used, the engine is started at the endpoint creation. When this parameter is missing, the value of component's property lazyCreateEngines is being used. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionID* | The optional sessionID identifies a specific FIX session. The format of the sessionID is: (BeginString):(SenderCompID)/(SenderSubID)/(SenderLocationID)-(TargetCompID)/(TargetSubID)/(TargetLocationID) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.configurations* | To use the given map of pre configured QuickFix configurations mapped to the key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.lazyCreateEngines* | If set to true, the engines will be created and started when needed (when first message is send) | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.logFactory* | To use the given LogFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageFactory* | To use the given MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.component.quickfix.messageStoreFactory* | To use the given MessageStoreFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rabbitmq-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rabbitmq-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0c3b06d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rabbitmq-kafka-sink-connector.adoc
@@ -0,0 +1,119 @@
+// kafka-connector options: START
+[[camel-rabbitmq-kafka-connector-sink]]
+= camel-rabbitmq-kafka-connector sink configuration
+
+When using camel-rabbitmq-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rabbitmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rabbitmq sink connector supports 93 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.exchangeName* | The exchange name determines which exchange produced messages will sent to. In the case of consumers, the exchange name determines which exchange the queue will bind to. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when existing connection has failures) | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exchangeType* | The exchange type such as direct or topic. One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hostname* | The hostname of the running rabbitmq instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.portNumber* | Port number for the host with the running rabbitmq instance or cluster. Default value is 5672. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | The queue to receive messages from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.routingKey* | The routing key to use when binding a consumer queue to the exchange. For producer routing keys, you set the header rabbitmq.ROUTING_KEY. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullHeaders* | Allow pass null values to header | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bridgeEndpoint* | If the bridgeEndpoint is true, the producer will ignore the message header of rabbitmq.EXCHANGE_NAME and rabbitmq.ROUTING_KEY | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelPoolMaxSize* | Get maximum number of opened channel in pool | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelPoolMaxWait* | Set the maximum number of milliseconds to wait for a channel from the pool | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.guaranteedDeliveries* | When true, an exception will be thrown when the message cannot be delivered (basic.return) and the message is marked as mandatory. PublisherAcknowledgement will also be activated in this case. See also publisher acknowledgements - When will messages be confirmed. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.immediate* | This flag tells the server how to react if the message cannot be routed to a queue consumer immediately. If this flag is set, the server will return an undeliverable message with a Return method. If this flag is zero, the server will queue the message, but with no guarantee that it will ever be consumed. If the header is present rabbitmq.IMMEDIATE it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mandatory* | This flag tells the server how to react if the message cannot be routed to a queue. If this flag is set, the server will return an unroutable message with a Return method. If this flag is zero, the server silently drops the message. If the header is present rabbitmq.MANDATORY it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publisherAcknowledgements* | When true, the message will be published with publisher acknowledgements turned on | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.publisherAcknowledgements Timeout* | The amount of time in milliseconds to wait for a basic.ack response from RabbitMQ server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestTimeoutCheckerInterval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.hostname* | The hostname of the running RabbitMQ instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.portNumber* | Port number for the host with the running rabbitmq instance or cluster. | 5672 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.allowNullHeaders* | Allow pass null values to header | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.channelPoolMaxSize* | Get maximum number of opened channel in pool | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.channelPoolMaxWait* | Set the maximum number of milliseconds to wait for a channel from the pool | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.guaranteedDeliveries* | When true, an exception will be thrown when the message cannot be delivered (basic.return) and the message is marked as mandatory. PublisherAcknowledgement will also be activated in this case. See also publisher acknowledgements - When will messages be confirmed. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.immediate* | This flag tells the server how to react if the message cannot be routed to a queue consumer immediately. If this flag is set, the server will return an undeliverable message with a Return method. If this flag is zero, the server will queue the message, but with no guarantee that it will ever be consumed. If the header is present rabbitmq.IMMEDIATE it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.mandatory* | This flag tells the server how to react if the message cannot be routed to a queue. If this flag is set, the server will return an unroutable message with a Return method. If this flag is zero, the server silently drops the message. If the header is present rabbitmq.MANDATORY it will override this option. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.publisherAcknowledgements* | When true, the message will be published with publisher acknowledgements turned on | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.publisherAcknowledgements Timeout* | The amount of time in milliseconds to wait for a basic.ack response from RabbitMQ server | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDetectConnection Factory* | Whether to auto-detect looking up RabbitMQ connection factory from the registry. When enabled and a single instance of the connection factory is found then it will be used. An explicit connection factory can be configured on the component or endpoint level which takes precedence. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when connection shutdown is not initiated by the application) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeoutChecker Interval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rabbitmq-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rabbitmq-kafka-source-connector.adoc
new file mode 100644
index 0000000..e126ef6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rabbitmq-kafka-source-connector.adoc
@@ -0,0 +1,119 @@
+// kafka-connector options: START
+[[camel-rabbitmq-kafka-connector-source]]
+= camel-rabbitmq-kafka-connector source configuration
+
+When using camel-rabbitmq-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rabbitmq-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rabbitmq source connector supports 93 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.exchangeName* | The exchange name determines which exchange produced messages will sent to. In the case of consumers, the exchange name determines which exchange the queue will bind to. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when existing connection has failures) | "true" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangeType* | The exchange type such as direct or topic. One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.hostname* | The hostname of the running rabbitmq instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.portNumber* | Port number for the host with the running rabbitmq instance or cluster. Default value is 5672. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | The queue to receive messages from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routingKey* | The routing key to use when binding a consumer queue to the exchange. For producer routing keys, you set the header rabbitmq.ROUTING_KEY. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoAck* | If messages should be auto acknowledged | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent consumers when consuming from broker. (eg similar as to the same option for the JMS component). | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveConsumer* | Request exclusive access to the queue (meaning only this consumer can access the queue). This is useful when you want a long-lived shared queue to be temporarily accessible by just one consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchCount* | The maximum number of messages that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchEnabled* | Enables the quality of service on the RabbitMQConsumer side. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchGlobal* | If the settings should be applied to the entire channel rather than each consumer You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prefetchSize* | The maximum amount of content (measured in octets) that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.threadPoolSize* | The consumer uses a Thread Pool Executor with a fixed number of threads. This setting allows you to set that number of threads. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestTimeoutChecker Interval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.addresses* | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDelete* | If it is true, the exchange will be deleted when it is no longer in use | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionFactory* | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchange* | The name of the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterExchangeType* | The type of the dead letter exchange One of: [direct] [fanout] [headers] [topic] | "direct" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterQueue* | The name of the dead letter queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.deadLetterRoutingKey* | The routing key for the dead letter exchange | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.declare* | If the option is true, camel declare the exchange and queue name and bind them together. If the option is false, camel won't declare the exchange and queue name on the server. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.durable* | If we are declaring a durable exchange (the exchange will survive a server restart) | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.exclusive* | Exclusive queues may only be accessed by the current connection, and are deleted when that connection closes. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.hostname* | The hostname of the running RabbitMQ instance or cluster. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.passive* | Passive queues depend on the queue already to be available at RabbitMQ. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.portNumber* | Port number for the host with the running rabbitmq instance or cluster. | 5672 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipExchangeDeclare* | This can be used if we need to declare the queue but not the exchange | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueBind* | If true the queue will not be bound to the exchange after declaring it | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.skipQueueDeclare* | If true the producer will not declare and bind a queue. This can be used for directing messages via an existing routing key. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.vhost* | The vhost for the channel | "/" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoAck* | If messages should be auto acknowledged | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.exclusiveConsumer* | Request exclusive access to the queue (meaning only this consumer can access the queue). This is useful when you want a long-lived shared queue to be temporarily accessible by just one consumer. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchCount* | The maximum number of messages that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchEnabled* | Enables the quality of service on the RabbitMQConsumer side. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchGlobal* | If the settings should be applied to the entire channel rather than each consumer You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.prefetchSize* | The maximum amount of content (measured in octets) that the server will deliver, 0 if unlimited. You need to specify the option of prefetchSize, prefetchCount, prefetchGlobal at the same time | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.threadPoolSize* | The consumer uses a Thread Pool Executor with a fixed number of threads. This setting allows you to set that number of threads. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.args* | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.autoDetectConnection Factory* | Whether to auto-detect looking up RabbitMQ connection factory from the registry. When enabled and a single instance of the connection factory is found then it will be used. An explicit connection factory can be configured on the component or endpoint level which takes precedence. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.automaticRecoveryEnabled* | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when connection shutdown is not initiated by the application) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.clientProperties* | Connection client properties (client info used in negotiating with the server) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.connectionTimeout* | Connection timeout | 60000 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.networkRecoveryInterval* | Network recovery interval in milliseconds (interval used when recovering from network failure) | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedChannelMax* | Connection requested channel max (max number of channels offered) | 2047 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedFrameMax* | Connection requested frame max (max size of frame offered) | 0 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestedHeartbeat* | Connection requested heartbeat (heart-beat in seconds offered) | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeout* | Set timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds) | 20000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.requestTimeoutChecker Interval* | Set requestTimeoutCheckerInterval for inOut exchange | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.topologyRecoveryEnabled* | Enables connection topology recovery (should topology recovery be performed) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.transferException* | When true and an inOut Exchange failed on the consumer side send the caused Exception back in the response | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.password* | Password for authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.sslProtocol* | Enables SSL on connection, accepted value are true, TLS and 'SSLv3 | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.trustManager* | Configure SSL trust manager, SSL should be enabled for this option to be effective | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rabbitmq.username* | Username in case of authenticated access | "guest" | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-reactive-streams-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-reactive-streams-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0048cd3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-reactive-streams-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-reactive-streams-kafka-connector-sink]]
+= camel-reactive-streams-kafka-connector sink configuration
+
+When using camel-reactive-streams-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-reactive-streams-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-reactive-streams sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.stream* | Name of the stream channel used by the endpoint to exchange messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.backpressureStrategy* | The backpressure strategy to use when pushing events to a slow subscriber. One of: [BUFFER] [OLDEST] [LATEST] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.backpressure Strategy* | The backpressure strategy to use when pushing events to a slow subscriber. One of: [BUFFER] [OLDEST] [LATEST] | "BUFFER" | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.internalEngine Configuration* | Configures the internal engine for Reactive Streams. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.serviceType* | Set the type of the underlying reactive streams implementation to use. The implementation is looked up from the registry or using a ServiceLoader, the default implementation is DefaultCamelReactiveStreamsService | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-reactive-streams-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-reactive-streams-kafka-source-connector.adoc
new file mode 100644
index 0000000..1d2cea1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-reactive-streams-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-reactive-streams-kafka-connector-source]]
+= camel-reactive-streams-kafka-connector source configuration
+
+When using camel-reactive-streams-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-reactive-streams-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-reactive-streams source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.stream* | Name of the stream channel used by the endpoint to exchange messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of threads used to process exchanges in the Camel route. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangesRefillLowWatermark* | Set the low watermark of requested exchanges to the active subscription as percentage of the maxInflightExchanges. When the number of pending items from the upstream source is lower than the watermark, new items can be requested to the subscription. If set to 0, the subscriber will request items in batches of maxInflightExchanges, only after all items of the previous batch have been processed. If set to 1, the subscriber can request a new item each time an exchange is processed (chatty). Any intermediate value can be used. | 0.25D | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnComplete* | Determines if onComplete events should be pushed to the Camel route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.forwardOnError* | Determines if onError events should be pushed to the Camel route. Exceptions will be set as message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxInflightExchanges* | Maximum number of exchanges concurrently being processed by Camel. This parameter controls backpressure on the stream. Setting a non-positive value will disable backpressure. | "128" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.internalEngine Configuration* | Configures the internal engine for Reactive Streams. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.reactive-streams.serviceType* | Set the type of the underlying reactive streams implementation to use. The implementation is looked up from the registry or using a ServiceLoader, the default implementation is DefaultCamelReactiveStreamsService | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ref-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ref-kafka-sink-connector.adoc
new file mode 100644
index 0000000..24ac092
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ref-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-ref-kafka-connector-sink]]
+= camel-ref-kafka-connector sink configuration
+
+When using camel-ref-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ref-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ref sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of endpoint to lookup in the registry. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ref-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ref-kafka-source-connector.adoc
new file mode 100644
index 0000000..db86274
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ref-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-ref-kafka-connector-source]]
+= camel-ref-kafka-connector source configuration
+
+When using camel-ref-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ref-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ref source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of endpoint to lookup in the registry. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ref.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rest-api-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rest-api-kafka-source-connector.adoc
new file mode 100644
index 0000000..fc8fa2a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rest-api-kafka-source-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-rest-api-kafka-connector-source]]
+= camel-rest-api-kafka-connector source configuration
+
+When using camel-rest-api-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-api-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest-api source connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.path* | The base path | null | ConfigDef.Importance.HIGH
+| *camel.source.path.contextIdPattern* | Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apiComponentName* | The Camel Rest API component to use for generating the API of the REST services, such as openapi. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerComponentName* | The Camel Rest component to use for (consumer) the REST transport, such as jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-api.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-api.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rest-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rest-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a8079fb
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rest-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-rest-kafka-connector-sink]]
+= camel-rest-kafka-connector sink configuration
+
+When using camel-rest-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.method* | HTTP method to use. One of: [get] [post] [put] [delete] [patch] [head] [trace] [connect] [options] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.path* | The base path | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.uriTemplate* | The uri template | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumes* | Media type such as: 'text/xml', or 'application/json' this REST service accepts. By default we accept all kinds of types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inType* | To declare the incoming POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outType* | To declare the outgoing POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.produces* | Media type such as: 'text/xml', or 'application/json' this REST service returns. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.routeId* | Name of the route this REST services creates | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiDoc* | The openapi api doc resource to use. The resource is loaded from classpath by default and must be in JSon format. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bindingMode* | Configures the binding mode for the producer. If set to anything other than 'off' the producer will try to convert the body of the incoming message from inType to the json or xml, and the response from json or xml to outType. One of: [auto] [off] [json] [xml] [json_xml] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Host and port of HTTP service to use (override host in openapi schema) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerComponentName* | The Camel Rest component to use for (producer) the REST transport, such as http, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queryParameters* | Query parameters for the HTTP service to call | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.apiDoc* | The swagger api doc resource to use. The resource is loaded from classpath by default and must be in JSon format. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.componentName* | The Camel Rest component to use for (producer) the REST transport, such as http, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.LOW
+| *camel.component.rest.host* | Host and port of HTTP service to use (override host in swagger schema) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.producerComponentName* | The Camel Rest component to use for (producer) the REST transport, such as http, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rest-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rest-kafka-source-connector.adoc
new file mode 100644
index 0000000..525d790
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rest-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-rest-kafka-connector-source]]
+= camel-rest-kafka-connector source configuration
+
+When using camel-rest-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.method* | HTTP method to use. One of: [get] [post] [put] [delete] [patch] [head] [trace] [connect] [options] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.path* | The base path | null | ConfigDef.Importance.HIGH
+| *camel.source.path.uriTemplate* | The uri template | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumes* | Media type such as: 'text/xml', or 'application/json' this REST service accepts. By default we accept all kinds of types. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inType* | To declare the incoming POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outType* | To declare the outgoing POJO binding type as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.produces* | Media type such as: 'text/xml', or 'application/json' this REST service returns. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeId* | Name of the route this REST services creates | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerComponentName* | The Camel Rest component to use for (consumer) the REST transport, such as jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.description* | Human description to document this REST service | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.consumerComponentName* | The Camel Rest component to use for (consumer) the REST transport, such as jetty, servlet, undertow. If no component has been explicit configured, then Camel will lookup if there is a Camel component that integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory is registered in the registry. If either one is found, then that is being used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rest-openapi-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rest-openapi-kafka-sink-connector.adoc
new file mode 100644
index 0000000..968d4bd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rest-openapi-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-rest-openapi-kafka-connector-sink]]
+= camel-rest-openapi-kafka-connector sink configuration
+
+When using camel-rest-openapi-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-openapi-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest-openapi sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.specificationUri* | Path to the OpenApi specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load openapi.json resource from the classpath. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \http://api.example.com:8080). Overrides component configuration. The OpenApi specification can be loaded from different sources by prefixing with file: classpath: http: https:. Support for https is limited to using the JDK installed UrlHandler, and as such it can be cumbersome to setup TLS/SSL certificates for https (such as setting a number of javax.net.ssl JVM system properties). How to do that consult the JDK documentation for UrlHandler. Default value notice: By default loads openapi.json file | "openapi.json" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.operationId* | ID of the operation from the OpenApi specification. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in OpenApi specification and in the component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Overrides component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the OpenApi specification and. in the component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-openapi next, and global configuration last. If set overrides any value found in the OpenApi specification, RestConfiguration. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in OpenApi specification. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the OpenApi specification. Can be overridden in endpoint configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-openapi next, and global configuration last. If set overrides any value found in the OpenApi specification, RestConfiguration. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the OpenApi specification. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.specificationUri* | Path to the OpenApi specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load openapi.json resource. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \https://api.example.com:8080). Can be overridden in endpoint configuration. | "openapi.json" | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.sslContextParameters* | Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-openapi.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rest-swagger-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rest-swagger-kafka-sink-connector.adoc
new file mode 100644
index 0000000..01ec5f3
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rest-swagger-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-rest-swagger-kafka-connector-sink]]
+= camel-rest-swagger-kafka-connector sink configuration
+
+When using camel-rest-swagger-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rest-swagger-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rest-swagger sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.specificationUri* | Path to the Swagger specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load swagger.json resource from the classpath. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \http://api.example.com:8080). Overrides component configuration. The Swagger specification can be loaded from different sources by prefixing with file: classpath: http: https:. Support for https is limited to using the JDK installed UrlHandler, and as such it can be cumbersome to setup TLS/SSL certificates for https (such as setting a number of javax.net.ssl JVM system properties). How to do that consult the JDK documentation for UrlHandler. Default value notice: By default loads swagger.json file | "swagger.json" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.operationId* | ID of the operation from the Swagger specification. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in Swagger specification and in the component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Overrides component configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the Swagger specification and. in the component configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-swagger next, and global configuration last. If set overrides any value found in the Swagger specification, RestConfiguration. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the Swagger specification. Overrides all other configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.basePath* | API basePath, for example /v2. Default is unset, if set overrides the value present in Swagger specification. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.componentName* | Name of the Camel component that will perform the requests. The component must be present in Camel registry and it must implement RestProducerFactory service provider interface. If not set CLASSPATH is searched for single component that implements RestProducerFactory SPI. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.consumes* | What payload type this component capable of consuming. Could be one type, like application/json or multiple types as application/json, application/xml; q=0.5 according to the RFC7231. This equates to the value of Accept HTTP header. If set overrides any value found in the Swagger specification. Can be overridden in endpoint configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.host* | Scheme hostname and port to direct the HTTP requests to in the form of \https://hostname:port. Can be configured at the endpoint, component or in the corresponding REST configuration in the Camel Context. If you give this component a name (e.g. petstore) that REST configuration is consulted first, rest-swagger next, and global configuration last. If set overrides any value found in the Swagger specification, RestConfiguration. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.produces* | What payload type this component is producing. For example application/json according to the RFC7231. This equates to the value of Content-Type HTTP header. If set overrides any value present in the Swagger specification. Can be overridden in endpoint configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.specificationUri* | Path to the Swagger specification file. The scheme, host base path are taken from this specification, but these can be overridden with properties on the component or endpoint level. If not given the component tries to load swagger.json resource. Note that the host defined on the component and endpoint of this Component should contain the scheme, hostname and optionally the port in the URI syntax (i.e. \https://api.example.com:8080). Can be overridden in endpoint configuration. | "swagger.json" | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.sslContextParameters* | Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context | null | ConfigDef.Importance.MEDIUM
+| *camel.component.rest-swagger.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-robotframework-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-robotframework-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f168ade
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-robotframework-kafka-sink-connector.adoc
@@ -0,0 +1,79 @@
+// kafka-connector options: START
+[[camel-robotframework-kafka-connector-sink]]
+= camel-robotframework-kafka-connector sink configuration
+
+When using camel-robotframework-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-robotframework-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-robotframework sink connector supports 53 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.argumentFile* | A text file to read more arguments from. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.combinedTagStats* | Creates combined statistics based on tags. Use the format tags:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.criticalTags* | Tests that have the given tags are considered critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugFile* | A debug file that is written during execution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.document* | Sets the documentation of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dryrun* | Sets dryrun mode on use. In the dry run mode tests are run without executing keywords originating from test libraries. Useful for validating test data syntax. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.excludes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exitOnFailure* | Sets robot to stop execution immediately if a critical test fails. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listener* | Sets a single listener for monitoring tests execution | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listeners* | Sets multiple listeners for monitoring tests execution. Use the format ListenerWithArgs:arg1:arg2 or simply ListenerWithoutArgs List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.log* | Sets the path to the generated log file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logLevel* | Sets the threshold level for logging. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.logTitle* | Sets a title for the generated tests log. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.metadata* | Sets free metadata for the top level tests suites. comma seperated list of string resulting as List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.monitorColors* | Using ANSI colors in console. Normally colors work in unixes but not in Windows. Default is 'on'. 'on' - use colors in unixes but not in Windows 'off' - never use colors 'force' - always use colors (also in Windows) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.monitorWidth* | Width of the monitor output. Default is 78. | "78" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.name* | Sets the name of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nonCriticalTags* | Tests that have the given tags are not critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noStatusReturnCode* | If true, sets the return code to zero regardless of failures in test cases. Error codes are returned normally. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Sets the path to the generated output file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputDirectory* | Configures where generated reports are to be placed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.randomize* | Sets the test execution order to be randomized. Valid values are all, suite, and test | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.report* | Sets the path to the generated report file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportBackground* | Sets background colors for the generated report and summary. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportTitle* | Sets a title for the generated tests report. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.runEmptySuite* | Executes tests also if the top level test suite is empty. Useful e.g. with --include/--exclude when it is not an error that no test matches the condition. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.runFailed* | Re-run failed tests, based on output.xml file. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.runMode* | Sets the execution mode for this tests run. Note that this setting has been deprecated in Robot Framework 2.8. Use separate dryryn, skipTeardownOnExit, exitOnFailure, and randomize settings instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.skipTeardownOnExit* | Sets whether the teardowns are skipped if the test execution is prematurely stopped. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splitOutputs* | Splits output and log files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suites* | Selects the tests suites by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suiteStatLevel* | Defines how many levels to show in the Statistics by Suite table in outputs. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.summaryTitle* | Sets a title for the generated summary report. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagDocs* | Adds documentation to the specified tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tags* | Sets the tags(s) to all executed tests cases. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagStatExcludes* | Excludes these tags from the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagStatIncludes* | Includes only these tags in the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tagStatLinks* | Adds external links to the Statistics by Tag table in outputs. Use the format pattern:link:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tests* | Selects the tests cases by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timestampOutputs* | Adds a timestamp to all output files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.variableFiles* | Sets variables using variables files. Use the format path:args List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.variables* | Sets individual variables. Use the format name:value List | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.warnOnSkippedFiles* | Show a warning when an invalid file is skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xunitFile* | Sets the path to the generated XUnit compatible result file, relative to outputDirectory. The file is in xml format. By default, the file name is derived from the testCasesDirectory parameter, replacing blanks in the directory name by underscores. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-robotframework-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-robotframework-kafka-source-connector.adoc
new file mode 100644
index 0000000..d198f2c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-robotframework-kafka-source-connector.adoc
@@ -0,0 +1,97 @@
+// kafka-connector options: START
+[[camel-robotframework-kafka-connector-source]]
+= camel-robotframework-kafka-connector source configuration
+
+When using camel-robotframework-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-robotframework-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-robotframework source connector supports 71 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.argumentFile* | A text file to read more arguments from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.combinedTagStats* | Creates combined statistics based on tags. Use the format tags:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.criticalTags* | Tests that have the given tags are considered critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugFile* | A debug file that is written during execution. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.document* | Sets the documentation of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dryrun* | Sets dryrun mode on use. In the dry run mode tests are run without executing keywords originating from test libraries. Useful for validating test data syntax. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.excludes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exitOnFailure* | Sets robot to stop execution immediately if a critical test fails. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includes* | Selects the tests cases by tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listener* | Sets a single listener for monitoring tests execution | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listeners* | Sets multiple listeners for monitoring tests execution. Use the format ListenerWithArgs:arg1:arg2 or simply ListenerWithoutArgs List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.log* | Sets the path to the generated log file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logLevel* | Sets the threshold level for logging. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.logTitle* | Sets a title for the generated tests log. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.metadata* | Sets free metadata for the top level tests suites. comma seperated list of string resulting as List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.monitorColors* | Using ANSI colors in console. Normally colors work in unixes but not in Windows. Default is 'on'. 'on' - use colors in unixes but not in Windows 'off' - never use colors 'force' - always use colors (also in Windows) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.monitorWidth* | Width of the monitor output. Default is 78. | "78" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.name* | Sets the name of the top-level tests suites. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nonCriticalTags* | Tests that have the given tags are not critical. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noStatusReturnCode* | If true, sets the return code to zero regardless of failures in test cases. Error codes are returned normally. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.output* | Sets the path to the generated output file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputDirectory* | Configures where generated reports are to be placed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.randomize* | Sets the test execution order to be randomized. Valid values are all, suite, and test | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.report* | Sets the path to the generated report file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportBackground* | Sets background colors for the generated report and summary. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportTitle* | Sets a title for the generated tests report. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runEmptySuite* | Executes tests also if the top level test suite is empty. Useful e.g. with --include/--exclude when it is not an error that no test matches the condition. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runFailed* | Re-run failed tests, based on output.xml file. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runMode* | Sets the execution mode for this tests run. Note that this setting has been deprecated in Robot Framework 2.8. Use separate dryryn, skipTeardownOnExit, exitOnFailure, and randomize settings instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipTeardownOnExit* | Sets whether the teardowns are skipped if the test execution is prematurely stopped. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitOutputs* | Splits output and log files. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.suites* | Selects the tests suites by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.suiteStatLevel* | Defines how many levels to show in the Statistics by Suite table in outputs. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.summaryTitle* | Sets a title for the generated summary report. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagDocs* | Adds documentation to the specified tags. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tags* | Sets the tags(s) to all executed tests cases. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagStatExcludes* | Excludes these tags from the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagStatIncludes* | Includes only these tags in the Statistics by Tag and Test Details by Tag tables in outputs. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tagStatLinks* | Adds external links to the Statistics by Tag table in outputs. Use the format pattern:link:title List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.tests* | Selects the tests cases by name. List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timestampOutputs* | Adds a timestamp to all output files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.variableFiles* | Sets variables using variables files. Use the format path:args List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.variables* | Sets individual variables. Use the format name:value List | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.warnOnSkippedFiles* | Show a warning when an invalid file is skipped. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.xunitFile* | Sets the path to the generated XUnit compatible result file, relative to outputDirectory. The file is in xml format. By default, the file name is derived from the testCasesDirectory parameter, replacing blanks in the directory name by underscores. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.robotframework.configuration* | The configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-rss-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-rss-kafka-source-connector.adoc
new file mode 100644
index 0000000..96f632f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-rss-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-rss-kafka-connector-source]]
+= camel-rss-kafka-connector source configuration
+
+When using camel-rss-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-rss-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-rss source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.feedUri* | The URI to the feed to poll. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.feedHeader* | Sets whether to add the feed object as a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Sets whether to use filtering or not of the entries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lastUpdate* | Sets the timestamp to be used for filtering entries from the atom feeds. This options is only in conjunction with the splitEntries. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortEntries* | Sets whether to sort entries by published date. Only works when splitEntries = true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splitEntries* | Sets whether or not entries should be sent individually or whether the entire feed should be sent as a single message | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throttleEntries* | Sets whether all entries identified in a single feed poll should be delivered immediately. If true, only one entry is processed per consumer.delay. Only applicable when splitEntries = true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Sets the username to be used for basic authentication when polling from a HTTP feed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.rss.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.rss.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-saga-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-saga-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4dc3913
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-saga-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-saga-kafka-connector-sink]]
+= camel-saga-kafka-connector sink configuration
+
+When using camel-saga-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-saga-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-saga sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.action* | Action to execute (complete or compensate) One of: [COMPLETE] [COMPENSATE] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.saga.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.saga.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-salesforce-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-salesforce-kafka-sink-connector.adoc
new file mode 100644
index 0000000..070ca93
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-salesforce-kafka-sink-connector.adoc
@@ -0,0 +1,101 @@
+// kafka-connector options: START
+[[camel-salesforce-kafka-connector-sink]]
+= camel-salesforce-kafka-connector sink configuration
+
+When using camel-salesforce-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-salesforce-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-salesforce sink connector supports 75 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operationName* | The operation to use One of: [getVersions] [getResources] [getGlobalObjects] [getBasicInfo] [getDescription] [getSObject] [createSObject] [updateSObject] [deleteSObject] [getSObjectWithId] [upsertSObject] [deleteSObjectWithId] [getBlobField] [query] [queryMore] [queryAll] [search] [apexCall] [recent] [createJob] [getJob] [closeJob] [abortJob] [createBatch] [getBatch] [getAllBatches] [getRequest] [getResults] [createBatchQuery] [getQueryResultIds] [getQueryResult] [getRecentReports] [getReportDescription] [executeSyncReport] [executeAsyncReport] [getReportInstances] [getReportResults] [limits] [approval] [approvals] [composite-tree] [composite-batch] [composite] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apexMethod* | APEX method name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apexQueryParams* | Query params for APEX method | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apexUrl* | APEX method URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiVersion* | Salesforce API version, defaults to SalesforceEndpointConfig.DEFAULT_VERSION | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.backoffIncrement* | Backoff interval increment for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batchId* | Bulk API Batch ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Bulk API content type, one of XML, CSV, ZIP_XML, ZIP_CSV One of: [XML] [CSV] [JSON] [ZIP_XML] [ZIP_CSV] [ZIP_JSON] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultReplayId* | Default replayId setting if no value is found in initialReplayIdMap | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.format* | Payload format to use for Salesforce API calls, either JSON or XML, defaults to JSON One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClient* | Custom Jetty Http Client to use to connect to Salesforce. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeDetails* | Include details in Salesforce1 Analytics report, defaults to false. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialReplayIdMap* | Replay IDs to start from per channel name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.instanceId* | Salesforce1 Analytics report execution instance ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobId* | Bulk API Job ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.limit* | Limit on number of returned records. Applicable to some of the API, check the Salesforce documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxBackoff* | Maximum backoff interval for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notFoundBehaviour* | Sets the behaviour of 404 not found status received from Salesforce API. Should the body be set to NULL NotFoundBehaviour#NULL or should a exception be signaled on the exchange NotFoundBehaviour#EXCEPTION - the default. One of: [EXCEPTION] [NULL] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForFields* | Notify for fields, options are ALL, REFERENCED, SELECT, WHERE One of: [ALL] [REFERENCED] [SELECT] [WHERE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationCreate* | Notify for create operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationDelete* | Notify for delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperations* | Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version 29.0) One of: [ALL] [CREATE] [EXTENDED] [UPDATE] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationUndelete* | Notify for un-delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.notifyForOperationUpdate* | Notify for update operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.objectMapper* | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rawPayload* | Use raw payload String for request and response (either JSON or XML depending on format), instead of DTOs, false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportId* | Salesforce1 Analytics report Id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportMetadata* | Salesforce1 Analytics report metadata for filtering | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultId* | Bulk API Result ID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectBlobFieldName* | SObject blob field name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectClass* | Fully qualified SObject class name, usually generated using camel-salesforce-maven-plugin | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectFields* | SObject fields to retrieve | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectId* | SObject ID if required by API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectIdName* | SObject external ID field name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectIdValue* | SObject external ID field value | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectName* | SObject name if required or supported by API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectQuery* | Salesforce SOQL query string | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sObjectSearch* | Salesforce SOSL search string | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.updateTopic* | Whether to update an existing Push Topic when using the Streaming API, defaults to false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientConnection Timeout* | Connection timeout used by the HttpClient when connecting to the Salesforce server. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientIdleTimeout* | Timeout used by the HttpClient when waiting for response from the Salesforce server. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpMaxContentLength* | Max content length of an HTTP response. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.packages* | In what packages are the generated DTO classes. Typically the classes would be generated using camel-salesforce-maven-plugin. Set it if using the generated DTOs to gain the benefit of using short SObject names in parameters/header values. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.config* | Global endpoint configuration - use to set values that are common to all endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientProperties* | Used to set any properties that can be configured on the underlying HTTP client. Have a look at properties of SalesforceHttpClient and the Jetty HttpClient for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.longPollingTransport Properties* | Used to set any properties that can be configured on the LongPollingTransport used by the BayeuxClient (CometD) used by the streaming api | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyExcluded Addresses* | A list of addresses for which HTTP proxy server should not be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyHost* | Hostname of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyIncluded Addresses* | A list of addresses for which HTTP proxy server should be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPort* | Port number of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySocks4* | If set to true the configures the HTTP proxy to use as a SOCKS4 proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.authenticationType* | Explicit authentication method to be used, one of USERNAME_PASSWORD, REFRESH_TOKEN or JWT. Salesforce component can auto-determine the authentication method to use from the properties set, set this property to eliminate any ambiguity. One of: [USERNAME_PASSWORD] [REFRESH_TOKEN] [JWT] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.clientId* | OAuth Consumer Key of the connected app configured in the Salesforce instance setup. Typically a connected app needs to be configured but one can be provided by installing a package. | null | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.clientSecret* | OAuth Consumer Secret of the connected app configured in the Salesforce instance setup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyAuthUri* | Used in authentication against the HTTP proxy server, needs to match the URI of the proxy server in order for the httpProxyUsername and httpProxyPassword to be used for authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPassword* | Password to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyRealm* | Realm of the proxy server, used in preemptive Basic/Digest authentication methods against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUseDigestAuth* | If set to true Digest authentication will be used when authenticating to the HTTP proxy, otherwise Basic authorization method will be used | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUsername* | Username to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.instanceUrl* | URL of the Salesforce instance used after authentication, by default received from Salesforce on successful authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySecure* | If set to false disables the use of TLS when accessing the HTTP proxy. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.keystore* | KeyStore parameters to use in OAuth JWT flow. The KeyStore should contain only one entry with private key and certificate. Salesforce does not verify the certificate chain, so this can easily be a selfsigned certificate. Make sure that you upload the certificate to the corresponding connected app. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.lazyLogin* | If set to true prevents the component from authenticating to Salesforce with the start of the component. You would generally set this to the (default) false and authenticate early and be immediately aware of any authentication issues. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginConfig* | All authentication configuration in one nested bean, all properties set there can be set directly on the component as well | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginUrl* | URL of the Salesforce instance used for authentication, by default set to \https://login.salesforce.com | "https://login.salesforce.com" | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.password* | Password used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. Make sure that you append security token to the end of the password if using one. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.refreshToken* | Refresh token already obtained in the refresh token OAuth flow. One needs to setup a web application and configure a callback URL to receive the refresh token, or configure using the builtin callback at \https://login.salesforce.com/services/oauth2/success or \https://test.salesforce.com/services/oauth2/success and then retrive the refresh_token from the URL at the end of the flow. Note that in development organizations Salesforce allows hosting the callback web application at localhost. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.sslContextParameters* | SSL parameters to use, see SSLContextParameters class for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.userName* | Username used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-salesforce-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-salesforce-kafka-source-connector.adoc
new file mode 100644
index 0000000..3585f75
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-salesforce-kafka-source-connector.adoc
@@ -0,0 +1,104 @@
+// kafka-connector options: START
+[[camel-salesforce-kafka-connector-source]]
+= camel-salesforce-kafka-connector source configuration
+
+When using camel-salesforce-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-salesforce-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-salesforce source connector supports 78 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.topicName* | The name of the topic/channel to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apexMethod* | APEX method name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apexQueryParams* | Query params for APEX method | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apexUrl* | APEX method URL | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apiVersion* | Salesforce API version, defaults to SalesforceEndpointConfig.DEFAULT_VERSION | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIncrement* | Backoff interval increment for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.batchId* | Bulk API Batch ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Bulk API content type, one of XML, CSV, ZIP_XML, ZIP_CSV One of: [XML] [CSV] [JSON] [ZIP_XML] [ZIP_CSV] [ZIP_JSON] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.defaultReplayId* | Default replayId setting if no value is found in initialReplayIdMap | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.format* | Payload format to use for Salesforce API calls, either JSON or XML, defaults to JSON One of: [JSON] [XML] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpClient* | Custom Jetty Http Client to use to connect to Salesforce. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeDetails* | Include details in Salesforce1 Analytics report, defaults to false. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialReplayIdMap* | Replay IDs to start from per channel name. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.instanceId* | Salesforce1 Analytics report execution instance ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jobId* | Bulk API Job ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | Limit on number of returned records. Applicable to some of the API, check the Salesforce documentation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxBackoff* | Maximum backoff interval for Streaming connection restart attempts for failures beyond CometD auto-reconnect. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notFoundBehaviour* | Sets the behaviour of 404 not found status received from Salesforce API. Should the body be set to NULL NotFoundBehaviour#NULL or should a exception be signaled on the exchange NotFoundBehaviour#EXCEPTION - the default. One of: [EXCEPTION] [NULL] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForFields* | Notify for fields, options are ALL, REFERENCED, SELECT, WHERE One of: [ALL] [REFERENCED] [SELECT] [WHERE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationCreate* | Notify for create operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationDelete* | Notify for delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperations* | Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version 29.0) One of: [ALL] [CREATE] [EXTENDED] [UPDATE] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationUndelete* | Notify for un-delete operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.notifyForOperationUpdate* | Notify for update operation, defaults to false (API version = 29.0) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.objectMapper* | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rawPayload* | Use raw payload String for request and response (either JSON or XML depending on format), instead of DTOs, false by default | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportId* | Salesforce1 Analytics report Id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reportMetadata* | Salesforce1 Analytics report metadata for filtering | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultId* | Bulk API Result ID | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectBlobFieldName* | SObject blob field name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectClass* | Fully qualified SObject class name, usually generated using camel-salesforce-maven-plugin | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectFields* | SObject fields to retrieve | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectId* | SObject ID if required by API | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectIdName* | SObject external ID field name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectIdValue* | SObject external ID field value | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectName* | SObject name if required or supported by API | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectQuery* | Salesforce SOQL query string | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sObjectSearch* | Salesforce SOSL search string | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.updateTopic* | Whether to update an existing Push Topic when using the Streaming API, defaults to false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.replayId* | The replayId value to use when subscribing | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientConnection Timeout* | Connection timeout used by the HttpClient when connecting to the Salesforce server. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientIdleTimeout* | Timeout used by the HttpClient when waiting for response from the Salesforce server. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpMaxContentLength* | Max content length of an HTTP response. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.packages* | In what packages are the generated DTO classes. Typically the classes would be generated using camel-salesforce-maven-plugin. Set it if using the generated DTOs to gain the benefit of using short SObject names in parameters/header values. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.config* | Global endpoint configuration - use to set values that are common to all endpoints | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpClientProperties* | Used to set any properties that can be configured on the underlying HTTP client. Have a look at properties of SalesforceHttpClient and the Jetty HttpClient for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.longPollingTransport Properties* | Used to set any properties that can be configured on the LongPollingTransport used by the BayeuxClient (CometD) used by the streaming api | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyExcluded Addresses* | A list of addresses for which HTTP proxy server should not be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyHost* | Hostname of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyIncluded Addresses* | A list of addresses for which HTTP proxy server should be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPort* | Port number of the HTTP proxy server to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySocks4* | If set to true the configures the HTTP proxy to use as a SOCKS4 proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.authenticationType* | Explicit authentication method to be used, one of USERNAME_PASSWORD, REFRESH_TOKEN or JWT. Salesforce component can auto-determine the authentication method to use from the properties set, set this property to eliminate any ambiguity. One of: [USERNAME_PASSWORD] [REFRESH_TOKEN] [JWT] | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.clientId* | OAuth Consumer Key of the connected app configured in the Salesforce instance setup. Typically a connected app needs to be configured but one can be provided by installing a package. | null | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.clientSecret* | OAuth Consumer Secret of the connected app configured in the Salesforce instance setup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyAuthUri* | Used in authentication against the HTTP proxy server, needs to match the URI of the proxy server in order for the httpProxyUsername and httpProxyPassword to be used for authentication. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyPassword* | Password to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyRealm* | Realm of the proxy server, used in preemptive Basic/Digest authentication methods against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUseDigestAuth* | If set to true Digest authentication will be used when authenticating to the HTTP proxy, otherwise Basic authorization method will be used | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.httpProxyUsername* | Username to use to authenticate against the HTTP proxy server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.instanceUrl* | URL of the Salesforce instance used after authentication, by default received from Salesforce on successful authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.isHttpProxySecure* | If set to false disables the use of TLS when accessing the HTTP proxy. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.keystore* | KeyStore parameters to use in OAuth JWT flow. The KeyStore should contain only one entry with private key and certificate. Salesforce does not verify the certificate chain, so this can easily be a selfsigned certificate. Make sure that you upload the certificate to the corresponding connected app. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.lazyLogin* | If set to true prevents the component from authenticating to Salesforce with the start of the component. You would generally set this to the (default) false and authenticate early and be immediately aware of any authentication issues. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginConfig* | All authentication configuration in one nested bean, all properties set there can be set directly on the component as well | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.loginUrl* | URL of the Salesforce instance used for authentication, by default set to \https://login.salesforce.com | "https://login.salesforce.com" | ConfigDef.Importance.HIGH
+| *camel.component.salesforce.password* | Password used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. Make sure that you append security token to the end of the password if using one. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.refreshToken* | Refresh token already obtained in the refresh token OAuth flow. One needs to setup a web application and configure a callback URL to receive the refresh token, or configure using the builtin callback at \https://login.salesforce.com/services/oauth2/success or \https://test.salesforce.com/services/oauth2/success and then retrive the refresh_token from the URL at the end of the flow. Note that in development organizations Salesforce allows hosting the callback web application at localhost. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.sslContextParameters* | SSL parameters to use, see SSLContextParameters class for all available options. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+| *camel.component.salesforce.userName* | Username used in OAuth flow to gain access to access token. It's easy to get started with password OAuth flow, but in general one should avoid it as it is deemed less secure than other flows. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sap-netweaver-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sap-netweaver-kafka-sink-connector.adoc
new file mode 100644
index 0000000..740b41b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sap-netweaver-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-sap-netweaver-kafka-connector-sink]]
+= camel-sap-netweaver-kafka-connector sink configuration
+
+When using camel-sap-netweaver-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sap-netweaver-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sap-netweaver sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Url to the SAP net-weaver gateway server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.flatternMap* | If the JSON Map contains only a single entry, then flattern by storing that single entry value as the message body. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.json* | Whether to return data in JSON format. If this option is false, then XML is returned in Atom format. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jsonAsMap* | To transform the JSON from a String to a Map in the message body. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for account. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.username* | Username for account. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sap-netweaver.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sap-netweaver.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-scheduler-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-scheduler-kafka-source-connector.adoc
new file mode 100644
index 0000000..6271255
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-scheduler-kafka-source-connector.adoc
@@ -0,0 +1,52 @@
+// kafka-connector options: START
+[[camel-scheduler-kafka-connector-source]]
+= camel-scheduler-kafka-connector source configuration
+
+When using camel-scheduler-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-scheduler-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-scheduler source connector supports 26 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | The name of the scheduler | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentTasks* | Number of threads used by the scheduling thread pool. Is by default using a single thread | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.scheduler.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scheduler.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scheduler.concurrentTasks* | Number of threads used by the scheduling thread pool. Is by default using a single thread | 1 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-schematron-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-schematron-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cf61d21
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-schematron-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-schematron-kafka-connector-sink]]
+= camel-schematron-kafka-connector sink configuration
+
+When using camel-schematron-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-schematron-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-schematron sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.path* | The path to the schematron rules file. Can either be in class path or location in the file system. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.abort* | Flag to abort the route and throw a schematron validation exception. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rules* | To use the given schematron rules instead of loading from the path | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | Set the URIResolver to be used for resolving schematron includes in the rules file. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.schematron.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.schematron.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-scp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-scp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e7c3ef7
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-scp-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-scp-kafka-connector-sink]]
+= camel-scp-kafka-connector sink configuration
+
+When using camel-scp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-scp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-scp sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=664. | "664" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.strictHostKeyChecking* | Sets whether to use strict host key checking. Possible values are: no, yes One of: [no] [yes] | "no" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsFile* | Sets the known_hosts file, so that the jsch endpoint can do host key verification. You can prefix with classpath: to load the file from classpath instead of file system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preferredAuthentications* | Set a comma separated list of authentications that will be used in order of preference. Possible authentication methods are defined by JCraft JSCH. Some examples include: gssapi-with-mic,publickey,keyboard-interactive,password If not specified the JSCH and/or system defaults will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyBytes* | Set the private key bytes to that the endpoint can do private key verification. This must be used only if privateKeyFile wasn't set. Otherwise the file will have the priority. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFile* | Set the private key file to that the endpoint can do private key verification. You can prefix with classpath: to load the file from classpath instead of file system. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFilePassphrase* | Set the private key file passphrase to that the endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useUserKnownHostsFile* | If knownHostFile has not been explicit configured, then use the host file from System.getProperty(user.home) /.ssh/known_hosts | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ciphers* | Set a comma separated list of ciphers that will be used in order of preference. Possible cipher names are defined by JCraft JSCH. Some examples include: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.scp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scp.verboseLogging* | JSCH is verbose logging out of the box. Therefore we turn the logging down to DEBUG logging by default. But setting this option to true turns on the verbose logging again. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.scp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-seda-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-seda-kafka-sink-connector.adoc
new file mode 100644
index 0000000..915b737
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-seda-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-seda-kafka-connector-sink]]
+= camel-seda-kafka-connector sink configuration
+
+When using camel-seda-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-seda sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardIfNoConsumers* | Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerTimeout* | offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultBlockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultDiscardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultOfferTimeout* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-seda-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-seda-kafka-source-connector.adoc
new file mode 100644
index 0000000..56ad562
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-seda-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-seda-kafka-connector-source]]
+= camel-seda-kafka-connector source configuration
+
+When using camel-seda-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-seda-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-seda source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limitConcurrentConsumers* | Whether to limit the number of concurrentConsumers to the maximum of 500. By default, an exception will be thrown if an endpoint is configured with a greater number. You can disable that check by turning this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use SEDA for Publish-Subscribe messaging. That is, you can send a message to the SEDA queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when polling. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.purgeWhenStopping* | Whether to purge the task queue when stopping the consumer/route. This allows to stop faster, as any pending messages on the queue is discarded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.concurrentConsumers* | Sets the default number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.seda.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-service-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-service-kafka-source-connector.adoc
new file mode 100644
index 0000000..66b8082
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-service-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-service-kafka-connector-source]]
+= camel-service-kafka-connector source configuration
+
+When using camel-service-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-service-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-service source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.delegateUri* | The endpoint uri to expose as service | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.service.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.service.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.service.service* | Inject the service to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.service.serviceSelector* | Inject the service selector used to lookup the ServiceRegistry to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-servicenow-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-servicenow-kafka-sink-connector.adoc
new file mode 100644
index 0000000..8305bdf
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-servicenow-kafka-sink-connector.adoc
@@ -0,0 +1,88 @@
+// kafka-connector options: START
+[[camel-servicenow-kafka-connector-sink]]
+= camel-servicenow-kafka-connector sink configuration
+
+When using camel-servicenow-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-servicenow-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-servicenow sink connector supports 62 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.instanceName* | The ServiceNow instance name | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.display* | Set this parameter to true to return only scorecards where the indicator Display field is selected. Set this parameter to all to return scorecards with any Display field value. This parameter is true by default. One of: [false] [true] [all] | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.displayValue* | Return the display value (true), actual value (false), or both (all) for reference fields (default: false) One of: [false] [true] [all] | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.excludeReferenceLink* | True to exclude Table API links for reference fields (default: false) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.favorites* | Set this parameter to true to return only scorecards that are favorites of the querying user. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAggregates* | Set this parameter to true to always return all available aggregates for an indicator, including when an aggregate has already been applied. If a value is not specified, this parameter defaults to false and returns no aggregates. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAvailableAggregates* | Set this parameter to true to return all available aggregates for an indicator when no aggregate has been applied. If a value is not specified, this parameter defaults to false and returns no aggregates. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAvailableBreakdowns* | Set this parameter to true to return all available breakdowns for an indicator. If a value is not specified, this parameter defaults to false and returns no breakdowns. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeScoreNotes* | Set this parameter to true to return all notes associated with the score. The note element contains the note text as well as the author and timestamp when the note was added. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeScores* | Set this parameter to true to return all scores for a scorecard. If a value is not specified, this parameter defaults to false and returns only the most recent score value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.inputDisplayValue* | True to set raw value of input fields (default: false) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.key* | Set this parameter to true to return only scorecards for key indicators. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.models* | Defines both request and response models | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.perPage* | Enter the maximum number of scorecards each query can return. By default this value is 10, and the maximum is 100. | "10" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.release* | The ServiceNow release to target, default to Helsinki See \https://docs.servicenow.com One of: [FUJI] [GENEVA] [HELSINKI] | "HELSINKI" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestModels* | Defines the request model | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resource* | The default resource, can be overridden by header CamelServiceNowResource | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.responseModels* | Defines the response model | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sortBy* | Specify the value to use when sorting results. By default, queries sort records by value. One of: [value] [change] [changeperc] [gap] [gapperc] [duedate] [name] [order] [default] [group] [indicator_group] [frequency] [target] [date] [trend] [bullet] [direction] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sortDir* | Specify the sort direction, ascending or descending. By default, queries sort records in descending order. Use sysparm_sortdir=asc to sort in ascending order. One of: [asc] [desc] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suppressAutoSysField* | True to suppress auto generation of system fields (default: false) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.suppressPaginationHeader* | Set this value to true to remove the Link header from the response. The Link header allows you to request additional pages of data when the number of records matching your query exceeds the query limit | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.table* | The default table, can be overridden by header CamelServiceNowTable | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.target* | Set this parameter to true to return only scorecards that have a target. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topLevelOnly* | Gets only those categories whose parent is a catalog. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiVersion* | The ServiceNow REST API version, default latest | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dateFormat* | The date format used for Json serialization/deserialization | "yyyy-MM-dd" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dateTimeFormat* | The date-time format used for Json serialization/deserialization | "yyyy-MM-dd HH:mm:ss" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpClientPolicy* | To configure http-client | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapper* | Sets Jackson's ObjectMapper to use for request/reply | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthorizationPolicy* | To configure proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retrieveTargetRecordOnImport* | Set this parameter to true to retrieve the target record when using import set api. The import set result is then replaced by the target record | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeFormat* | The time format used for Json serialization/deserialization | "HH:mm:ss" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiUrl* | The ServiceNow REST API url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthClientId* | OAuth2 ClientID | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthClientSecret* | OAuth2 ClientSecret | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthTokenUrl* | OAuth token Url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | ServiceNow account password, MUST be provided | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.proxyPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyUserName* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. See \http://camel.apache.org/camel-configuration-utilities.html | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.userName* | ServiceNow user account name, MUST be provided | null | ConfigDef.Importance.HIGH
+| *camel.component.servicenow.apiUrl* | The ServiceNow REST API url | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.configuration* | The ServiceNow default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.instanceName* | The ServiceNow instance name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.oauthClientId* | OAuth2 ClientID | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.oauthClientSecret* | OAuth2 ClientSecret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.oauthTokenUrl* | OAuth token Url | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.password* | ServiceNow account password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.proxyUserName* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servicenow.userName* | ServiceNow user account name | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-servlet-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-servlet-kafka-source-connector.adoc
new file mode 100644
index 0000000..db05227
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-servlet-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-servlet-kafka-connector-source]]
+= camel-servlet-kafka-connector source configuration
+
+When using camel-servlet-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-servlet-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-servlet source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.contextPath* | The context-path to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.chunked* | If this option is false the Servlet will disable the HTTP streaming and set the content-length header on the response | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Servlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Servlet input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. DefaultHttpBinding will copy the request input stream into a stream cache and put it into message body if this option is false to support reading the stream multiple times. If you use Servlet to bridge/proxy an endpoint then consider enabling this option to improve performance, in case you do not need to read the message payload multiple times. The http producer will by default cache the response body stream. If setting this option to true, then the producers will not cache the response body stream but use the response stream as-is as the message body. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.async* | Configure the consumer to work in async mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.responseBufferSize* | To use a custom buffer size on the javax.servlet.ServletResponse. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.servletName* | Name of the servlet to use | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentMultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckContentAvailable* | Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present. This can be turned on in case HTTP clients do not send streamed data. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileNameExtWhitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.traceEnabled* | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageBody* | If this option is true then IN exchange Body of the exchange will be mapped to HTTP body. Setting this to false will avoid the HTTP mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageFormUrlEncoded Body* | If this option is true then IN exchange Form Encoded body of the exchange will be mapped to HTTP. Setting this to false will avoid the HTTP Form Encoded body mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHttpMessageHeaders* | If this option is true then IN exchange Headers of the exchange will be mapped to HTTP headers. Setting this to false will avoid the HTTP Headers mapping. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.servletName* | Default name of servlet to use. The default name is CamelServlet. | "CamelServlet" | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.attachmentMultipartBinding* | Whether to automatic bind multipart/form-data as attachments on the Camel Exchange. The options attachmentMultipartBinding=true and disableStreamCache=false cannot work together. Remove disableStreamCache to use AttachmentMultipartBinding. This is turn off by default as this may require servlet specific configuration to enable this when using Servlet's. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.fileNameExtWhitelist* | Whitelist of accepted filename extensions for accepting uploaded files. Multiple extensions can be separated by comma, such as txt,xml. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.httpRegistry* | To use a custom org.apache.camel.component.servlet.HttpRegistry. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.allowJavaSerializedObject* | Whether to allow java serialization when a request uses context-type=application/x-java-serialized-object. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.httpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.httpConfiguration* | To use the shared HttpConfiguration as base configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.servlet.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sftp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sftp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..16193d0
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sftp-kafka-sink-connector.adoc
@@ -0,0 +1,84 @@
+// kafka-connector options: START
+[[camel-sftp-kafka-connector-sink]]
+= camel-sftp-kafka-connector sink configuration
+
+When using camel-sftp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sftp sink connector supports 58 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jschLoggingLevel* | The logging level to use for JSCH activity logging. As JSCH is verbose at by default at INFO level the threshold is WARN by default. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileExist* | What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename] | "Override" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.flatten* | Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jailStartingDirectory* | Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExisting* | Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempFileName* | The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir/finalFilename then tempFileName is relative to that subdirectory dir. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tempPrefix* | This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.chmod* | Allows you to set chmod on the stored file. For example chmod=640. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disconnectOnBatchComplete* | Whether or not to disconnect from remote FTP server right after a Batch upload is complete. disconnectOnBatchComplete will only disconnect the current connection to the FTP server. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eagerDeleteTargetFile* | Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepLastModified* | Will keep the last modified timestamp from the source file (if any). Will use the Exchange.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the \ftp producers. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moveExistingFileStrategy* | Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendNoop* | Whether to send a noop command as a pre-write check before uploading files to the FTP server. This is enabled by default as a validation of the connection is still valid, which allows to silently re-connect to be able to upload the file. However if this causes problems, you can turn this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bindAddress* | Specifies the address of the local interface against which the connection should bind. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bulkRequests* | Specifies how many requests may be outstanding at any one time. Increasing this value may slightly improve file transfer speed but will increase memory usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.compression* | To use compression. Specify a level from 1 to 10. Important: You must manually add the needed JSCH zlib JAR to the classpath for compression support. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxy* | To use a custom configured com.jcraft.jsch.Proxy. This proxy is used to consume/send messages from the target SFTP host. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverAliveCountMax* | Sets the number of keep-alive messages which may be sent without receiving any messages back from the server. If this threshold is reached while keep-alive messages are being sent, the connection will be disconnected. The default value is one. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverAliveInterval* | Sets the interval (millis) to send a keep-alive message. If zero is specified, any keep-alive message must not be sent. The default interval is zero. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnConnectFailed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ciphers* | Set a comma separated list of ciphers that will be used in order of preference. Possible cipher names are defined by JCraft JSCH. Some examples include: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPair* | Sets a key pair of the public and private key so to that the SFTP endpoint can do public/private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHosts* | Sets the known_hosts from the byte array, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsFile* | Sets the known_hosts file, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsUri* | Sets the known_hosts file (loaded from classpath by default), so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preferredAuthentications* | Set the preferred authentications which SFTP endpoint will used. Some example include:password,publickey. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKey* | Set the private key as byte so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyFile* | Set the private key file so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyPassphrase* | Set the private key file passphrase so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateKeyUri* | Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.strictHostKeyChecking* | Sets whether to use strict host key checking. One of: [no] [yes] | "no" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useUserKnownHostsFile* | If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sftp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sftp-kafka-source-connector.adoc
new file mode 100644
index 0000000..8f7f916
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sftp-kafka-source-connector.adoc
@@ -0,0 +1,137 @@
+// kafka-connector options: START
+[[camel-sftp-kafka-connector-source]]
+= camel-sftp-kafka-connector source configuration
+
+When using camel-sftp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sftp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sftp source connector supports 111 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the FTP server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port of the FTP server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.directoryName* | The starting directory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binary* | Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.charset* | This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether or not to disconnect from remote FTP server right after use. Disconnect will only disconnect the current connection to the FTP server. If you have a consumer which you want to stop, then you need to stop the consumer/route instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doneFileName* | Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only \${file.name} and \${file.name.next} is supported as dynamic placeholders. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-\${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jschLoggingLevel* | The logging level to use for JSCH activity logging. As JSCH is verbose at by default at INFO level the threshold is WARN by default. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passiveMode* | Sets passive mode connections. Default is active mode connections. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | Sets the path separator to be used. UNIX = Uses unix style path separator Windows = Uses windows style path separator Auto = (is default) Use existing path separator in file name One of: [UNIX] [Windows] [Auto] | "UNIX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fastExistsCheck* | If set this option to be true, camel-\ftp will use the list file directly to check if the file exists. Since some FTP server may not support to list the file directly, if the option is false, camel-\ftp will use the old way to list the directory and check if the file exists. This option also influences readLock=changed to control whether it performs a fast check to update file information or not. This can be used to speed up the process if the FTP server has a lot of files. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | If true, the file will be deleted after it is processed successfully. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveFailed* | Sets the move failure expression based on Simple language. For example, to move files into a .error subdirectory use: .error. Note: When moving the files to the fail location Camel will handle the error and will not pick up the file again. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.noop* | If true, the file is not moved or deleted in any way. This option is good for readonly data, or for ETL type requirements. If noop=true, Camel will set idempotent=true as well, to avoid consuming the same files over and over again. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preMove* | Expression (such as File Language) used to dynamically set the filename when moving it before processing. For example to move in-progress files into the order directory set this value to order. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preSort* | When pre-sort is enabled then the consumer will sort the file and directory names during polling, that was retrieved from the file system. You may want to do this in case you need to operate on the files in a sorted order. The pre-sort is executed before the consumer starts to filter, and accept files to process by Camel. This option is default=false meaning disabled. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recursive* | If a directory, will look for files in all the sub-directories as well. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streamDownload* | Sets the download method to use when not using a local working directory. If set to true, the remote files are streamed to the route as they are read. When set to false, the remote files are loaded into memory before being sent into the route. If enabling this option then you must set stepwise=false as both cannot be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.download* | Whether the FTP consumer should download the file. If this option is set to false, then the message body will be null, but the consumer will still trigger a Camel Exchange that has details about the file such as file name, file size, etc. It's just that the file will not be downloaded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreFileNotFoundOr PermissionError* | Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inProgressRepository* | A pluggable in-progress repository org.apache.camel.spi.IdempotentRepository. The in-progress repository is used to account the current in progress files being consumed. By default a memory based repository is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.localWorkDirectory* | When consuming, a local work directory can be used to store the remote file content directly in local files, to avoid loading the content into memory. This is beneficial, if you consume a very big remote file and thus can conserve memory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onCompletionExceptionHandler* | To use a custom org.apache.camel.spi.ExceptionHandler to handle any thrown exceptions that happens during the file on completion process where the consumer does either a commit or rollback. The default implementation will log any exception at WARN level and ignore. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processStrategy* | A pluggable org.apache.camel.component.file.GenericFileProcessStrategy allowing you to implement your own readLock option or similar. Can also be used when special conditions must be met before a file can be consumed, such as a special ready file exists. If this option is set then the readLock option does not apply. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useList* | Whether to allow using LIST command when downloading a file. Default is true. In some use cases you may want to download a specific file and are not allowed to use the LIST command, and therefore you can set this option to false. Notice when using this option, then the specific file to download does not include meta-data information such as file size, timestamp, permissions etc, because those information is only possible to retrieve when LIST command is in use. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.autoCreate* | Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bindAddress* | Specifies the address of the local interface against which the connection should bind. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bulkRequests* | Specifies how many requests may be outstanding at any one time. Increasing this value may slightly improve file transfer speed but will increase memory usage. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.compression* | To use compression. Specify a level from 1 to 10. Important: You must manually add the needed JSCH zlib JAR to the classpath for compression support. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectTimeout* | Sets the connect timeout for waiting for a connection to be established Used by both FTPClient and JSCH | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maximumReconnectAttempts* | Specifies the maximum reconnect attempts Camel performs when it tries to connect to the remote FTP server. Use 0 to disable this behavior. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxy* | To use a custom configured com.jcraft.jsch.Proxy. This proxy is used to consume/send messages from the target SFTP host. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Delay in millis Camel will wait before performing a reconnect attempt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverAliveCountMax* | Sets the number of keep-alive messages which may be sent without receiving any messages back from the server. If this threshold is reached while keep-alive messages are being sent, the connection will be disconnected. The default value is one. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverAliveInterval* | Sets the interval (millis) to send a keep-alive message. If zero is specified, any keep-alive message must not be sent. The default interval is zero. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.soTimeout* | Sets the so timeout FTP and FTPS Only for Camel 2.4. SFTP for Camel 2.14.3/2.15.3/2.16 onwards. Is the SocketOptions.SO_TIMEOUT value in millis. Recommended option is to set this to 300000 so as not have a hanged connection. On SFTP this option is set as timeout on the JSCH Session instance. | 300000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stepwise* | Sets whether we should stepwise change directories while traversing file structures when downloading files, or as well when uploading a file to a directory. You can disable this if you for example are in a situation where you cannot change directory on the FTP server due security reasons. Stepwise cannot be used together with streamDownload. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.throwExceptionOnConnect Failed* | Should an exception be thrown if connection failed (exhausted) By default exception is not thrown and a WARN is logged. You can use this to enable exception being thrown and handle the thrown exception from the org.apache.camel.spi.PollingConsumerPollStrategy rollback method. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the data timeout for waiting for reply Used only by FTPClient | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antExclude* | Ant style filter exclusion. If both antInclude and antExclude are used, antExclude takes precedence over antInclude. Multiple exclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antFilterCaseSensitive* | Sets case sensitive flag on ant filter. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.antInclude* | Ant style filter inclusion. Multiple inclusions may be specified in comma-delimited format. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerMaxMessagesPerPoll* | Allows for controlling whether the limit from maxMessagesPerPoll is eager or not. If eager then the limit is during the scanning of files. Where as false would scan all files, and then perform sorting. Setting this option to false allows for sorting all files first, and then limit the poll. Mind that this requires a higher memory usage as all file details are in memory to perform the sorting. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclude* | Is used to exclude files, if filename matches the regex pattern (matching is case in-senstive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filter* | Pluggable filter as a org.apache.camel.component.file.GenericFileFilter class. Will skip files if filter returns false in its accept() method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterDirectory* | Filters the directory based on Simple language. For example to filter on current date, you can use a simple date pattern such as \${date:now:yyyMMdd} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterFile* | Filters the file based on Simple language. For example to filter on file size, you can use \${file:size} 5000 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotent* | Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files. Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled as well to avoid consuming the same files over and over again. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentKey* | To use a custom idempotent key. By default the absolute path of the file is used. You can use the File Language, for example to use the file name and file size, you can do: idempotentKey=\${file:name}-\${file:size} | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which by default use MemoryMessageIdRepository if none is specified and idempotent is true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.include* | Is used to include files, if filename matches the regex pattern (matching is case in-sensitive). Notice if you use symbols such as plus sign and others you would need to configure this using the RAW() syntax if configuring this as an endpoint uri. See more details at configuring endpoint uris | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxDepth* | The maximum depth to traverse when recursively processing a directory. | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | To define a maximum messages to gather per poll. By default no maximum is set. Can be used to set a limit of e.g. 1000 to avoid when starting up the server that there are thousands of files. Set a value of 0 or negative to disabled it. Notice: If this option is in use then the File and FTP components will limit before any sorting. For example if you have 100000 files and use maxMessagesPerPoll=500, then only the first 500 files will be picked up, and then sorted. You can use the eagerMaxMessagesPerPoll option and set this to false to allow to scan all files first and then sort afterwards. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minDepth* | The minimum depth to start processing when recursively processing a directory. Using minDepth=1 means the base directory. Using minDepth=2 means the first sub directory. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.move* | Expression (such as Simple Language) used to dynamically set the filename when moving it after processing. To move files into a .done subdirectory just enter .done. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exclusiveReadLockStrategy* | Pluggable read-lock as a org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLock* | Used by consumer, to only poll the files if it has exclusive read-lock on the file (i.e. the file is not in-progress or being written). Camel will wait until the file lock is granted. This option provides the build in strategies: - none - No read lock is in use - markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component - changed - Changed is using file length/modification timestamp to detect whether the file is currently being copied or not. Will at least use 1 sec to determine this, so this option cannot consume files as fast as the others, but can be more reliable as the JDK IO API cannot always determine whether a file is currently being used by another process. The option readLockCheckInterval can be used to set the check frequency. - fileLock - is for using java.nio.channels.FileLock. This option is not avail for Windows OS and the FTP component. This approach should be avoided when accessing a remote file system via a mount/share unless that file system supports distributed file locks. - rename - rename is for using a try to rename the file as a test if we can get exclusive read-lock. - idempotent - (only for file component) idempotent is for using a idempotentRepository as the read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-changed - (only for file component) idempotent-changed is for using a idempotentRepository and changed as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that. - idempotent-rename - (only for file component) idempotent-rename is for using a idempotentRepository and rename as the combined read-lock. This allows to use read locks that supports clustering if the idempotent repository implementation supports that.Notice: The various read locks is not all suited to work in clustered mode, where concurrent consumers on different nodes is competing for the same files on a shared file system. The markerFile using a close to atomic operation to create the empty marker file, but its not guaranteed to work in a cluster. The fileLock may work better but then the file system need to support distributed file locks, and so on. Using the idempotent read lock can support clustering if the idempotent repository supports clustering, such as Hazelcast Component or Infinispan. One of: [none] [markerFile] [fileLock] [rename] [changed] [idempotent] [idempotent-changed] [idempotent-rename] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockCheckInterval* | Interval in millis for the read-lock, if supported by the read lock. This interval is used for sleeping between attempts to acquire the read lock. For example when using the changed read lock, you can set a higher interval period to cater for slow writes. The default of 1 sec. may be too fast if the producer is very slow writing the file. Notice: For FTP the default readLockCheckInterval is 5000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockDeleteOrphanLock Files* | Whether or not read lock with marker files should upon startup delete any orphan read lock files, which may have been left on the file system, if Camel was not properly shutdown (such as a JVM crash). If turning this option to false then any orphaned lock file will cause Camel to not attempt to pickup that file, this could also be due another node is concurrently reading files from the same shared directory. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Async* | Whether the delayed release task should be synchronous or asynchronous. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease AsyncPoolSize* | The number of threads in the scheduled thread pool when using asynchronous release tasks. Using a default of 1 core threads should be sufficient in almost all use-cases, only set this to a higher value if either updating the idempotent repository is slow, or there are a lot of files to process. This option is not in-use if you use a shared thread pool by configuring the readLockIdempotentReleaseExecutorService option. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease Delay* | Whether to delay the release task for a period of millis. This can be used to delay the release tasks to expand the window when a file is regarded as read-locked, in an active/active cluster scenario with a shared idempotent repository, to ensure other nodes cannot potentially scan and acquire the same file, due to race-conditions. By expanding the time-window of the release tasks helps prevents these situations. Note delaying is only needed if you have configured readLockRemoveOnCommit to true. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockIdempotentRelease ExecutorService* | To use a custom and shared thread pool for asynchronous release tasks. See more details at the readLockIdempotentReleaseDelay option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockLoggingLevel* | Logging level used when a read lock could not be acquired. By default a DEBUG is logged. You can change this level, for example to OFF to not have any logging. This option is only applicable for readLock of types: changed, fileLock, idempotent, idempotent-changed, idempotent-rename, rename. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "DEBUG" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMarkerFile* | Whether to use marker file with the changed, rename, or exclusive read lock types. By default a marker file is used as well to guard against other processes picking up the same files. This behavior can be turned off by setting this option to false. For example if you do not want to write marker files to the file systems by the Camel application. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinAge* | This option is applied only for readLock=changed. It allows to specify a minimum age the file must be before attempting to acquire the read lock. For example use readLockMinAge=300s to require the file is at last 5 minutes old. This can speedup the changed read lock as it will only attempt to acquire files which are at least that given age. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockMinLength* | This option is applied only for readLock=changed. It allows you to configure a minimum file length. By default Camel expects the file to contain data, and thus the default value is 1. You can set this option to zero, to allow consuming zero-length files. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnCommit* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file is succeeded and a commit happens. By default the file is not removed which ensures that any race-condition do not occur so another active node may attempt to grab the file. Instead the idempotent repository may support eviction strategies that you can configure to evict the file name entry after X minutes - this ensures no problems with race conditions. See more details at the readLockIdempotentReleaseDelay option. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockRemoveOnRollback* | This option is applied only for readLock=idempotent. It allows to specify whether to remove the file name entry from the idempotent repository when processing the file failed and a rollback happens. If this option is false, then the file name entry is confirmed (as if the file did a commit). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readLockTimeout* | Optional timeout in millis for the read-lock, if supported by the read-lock. If the read-lock could not be granted and the timeout triggered, then Camel will skip the file. At next poll Camel, will try the file again, and this time maybe the read-lock could be granted. Use a value of 0 or lower to indicate forever. Currently fileLock, changed and rename support the timeout. Notice: For FTP the default readLockTimeout value is 20000 instead of 10000. The readLockTimeout value must be higher than readLockCheckInterval, but a rule of thumb is to have a timeout that is at least 2 or more times higher than the readLockCheckInterval. This is needed to ensure that amble time is allowed for the read lock process to try to grab the lock before the timeout was hit. | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shuffle* | To shuffle the list of files (sort in random order) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortBy* | Built-in sort by using the File Language. Supports nested sorts, so you can have a sort by file name and as a 2nd group sort by modified date. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sorter* | Pluggable sorter as a java.util.Comparator class. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ciphers* | Set a comma separated list of ciphers that will be used in order of preference. Possible cipher names are defined by JCraft JSCH. Some examples include: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-cbc,aes256-cbc. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPair* | Sets a key pair of the public and private key so to that the SFTP endpoint can do public/private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHosts* | Sets the known_hosts from the byte array, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHostsFile* | Sets the known_hosts file, so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHostsUri* | Sets the known_hosts file (loaded from classpath by default), so that the SFTP endpoint can do host key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.preferredAuthentications* | Set the preferred authentications which SFTP endpoint will used. Some example include:password,publickey. If not specified the default list from JSCH will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKey* | Set the private key as byte so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyFile* | Set the private key file so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyPassphrase* | Set the private key file passphrase so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateKeyUri* | Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.strictHostKeyChecking* | Sets whether to use strict host key checking. One of: [no] [yes] | "no" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username to use for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useUserKnownHostsFile* | If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sftp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sip-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sip-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4d04247
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sip-kafka-sink-connector.adoc
@@ -0,0 +1,70 @@
+// kafka-connector options: START
+[[camel-sip-kafka-connector-sink]]
+= camel-sip-kafka-connector sink configuration
+
+When using camel-sip-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sip-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sip sink connector supports 44 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sip-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sip-kafka-source-connector.adoc
new file mode 100644
index 0000000..47daf6f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sip-kafka-source-connector.adoc
@@ -0,0 +1,74 @@
+// kafka-connector options: START
+[[camel-sip-kafka-connector-source]]
+= camel-sip-kafka-connector source configuration
+
+When using camel-sip-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sip-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sip source connector supports 48 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumer* | This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.presenceAgent* | This setting is used to distinguish between a Presence Agent & a consumer. This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sip.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sips-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sips-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1c20a85
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sips-kafka-sink-connector.adoc
@@ -0,0 +1,70 @@
+// kafka-connector options: START
+[[camel-sips-kafka-connector-sink]]
+= camel-sips-kafka-connector sink configuration
+
+When using camel-sips-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sips-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sips sink connector supports 44 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sips-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sips-kafka-source-connector.adoc
new file mode 100644
index 0000000..a3605bc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sips-kafka-source-connector.adoc
@@ -0,0 +1,74 @@
+// kafka-connector options: START
+[[camel-sips-kafka-connector-source]]
+= camel-sips-kafka-connector source configuration
+
+When using camel-sips-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sips-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sips source connector supports 48 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | URI of the SIP server to connect to (the username and password can be included such as: john:secretmyserver:9999) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.cacheConnections* | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentSubType* | Setting for contentSubType can be set to any valid MimeSubType. | "plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | Setting for contentType can be set to any valid MimeType. | "text" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeaderName* | Setting for a String based event type. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventId* | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHost* | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromPort* | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromUser* | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.msgExpiration* | The amount of time a message received at an endpoint is considered valid | 3600 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.receiveTimeoutMillis* | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stackName* | Name of the SIP Stack instance associated with an SIP Endpoint. | "NAME_NOT_SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHost* | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toPort* | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toUser* | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transport* | Setting for choice of transport protocol. Valid choices are tcp or udp. One of: [tcp] [udp] | "tcp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumer* | This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.presenceAgent* | This setting is used to distinguish between a Presence Agent & a consumer. This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressFactory* | To use a custom AddressFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.callIdHeader* | A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contactHeader* | An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeHeader* | A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eventHeader* | A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expiresHeader* | A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extensionHeader* | A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromHeader* | A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFactory* | To use a custom HeaderFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listeningPoint* | To use a custom ListeningPoint implementation | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwardsHeader* | A custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessageSize* | Setting for maximum allowed Message size in bytes. | 1048576 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageFactory* | To use a custom MessageFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipFactory* | To use a custom SipFactory to create the SipStack to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipStack* | To use a custom SipStack | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sipUri* | To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toHeader* | A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.viaHeaders* | List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationDebugLogFile* | Name of client debug log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationServerLogFile* | Name of server log file to use for logging | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.implementationTraceLevel* | Logging level for tracing | "0" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxForwards* | Number of maximum proxy forwards | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useRouterForAllUris* | This setting is used when requests are sent to the Presence Agent via a proxy. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sips.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sjms-batch-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sjms-batch-kafka-source-connector.adoc
new file mode 100644
index 0000000..8600309
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sjms-batch-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-sjms-batch-kafka-connector-source]]
+= camel-sjms-batch-kafka-connector source configuration
+
+When using camel-sjms-batch-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms-batch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms-batch source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationName* | The destination name. Only queues are supported, names may be prefixed by 'queue:'. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.aggregationStrategy* | The aggregation strategy to use, which merges all the batched messages into a single message | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionInterval* | The completion interval in millis, which causes batches to be completed in a scheduled fixed rate every interval. The batch may be empty if the timeout triggered and there was no messages in the batch. Notice you cannot use both completion timeout and completion interval at the same time, only one can be configured. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionPredicate* | The completion predicate, which causes batches to be completed when the predicate evaluates as true. The predicate can also be configured using the simple language using the string syntax. You may want to set the option eagerCheckCompletion to true to let the predicate match the incoming message, as otherwise it matches the aggregated message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionSize* | The number of messages consumed at which the batch will be completed | 200 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.completionTimeout* | The timeout in millis from receipt of the first first message when the batch will be completed. The batch may be empty if the timeout triggered and there was no messages in the batch. Notice you cannot use both completion timeout and completion interval at the same time, only one can be configured. | 500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerCount* | The number of JMS sessions to consume from | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.eagerCheckCompletion* | Use eager completion checking which means that the completionPredicate will use the incoming Exchange. As opposed to without eager completion checking the completionPredicate will use the aggregated Exchange. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollDuration* | The duration in milliseconds of each poll for messages. completionTimeOut will be used if it is shorter and a batch has started. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If using completion timeout or interval, then the batch may be empty if the timeout triggered and there was no messages in the batch. If this option is true and the batch is empty then an empty message is added to the batch so an empty message is routed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keepAliveDelay* | The delay in millis between attempts to re-establish a valid session. If this is a positive value the SjmsBatchConsumer will attempt to create a new session if it sees an IllegalStateException during message consumption. This delay value allows you to pause between attempts to prevent spamming the logs. If this is a negative value (default is -1) then the SjmsBatchConsumer will behave as it always has before - that is it will bail out and the route will shut down if it sees an IllegalStateException. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeoutCheckerExecutor Service* | If using the completionInterval option a background thread is created to trigger the completion interval. Set this option to provide a custom thread pool to be used rather than creating a new thread for every consumer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.connectionFactory* | A ConnectionFactory is required to enable the SjmsBatchComponent. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.recoveryInterval* | Specifies the interval between recovery attempts, i.e. when a connection is being refreshed, in milliseconds. The default is 5000 ms, that is, 5 seconds. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms-batch.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sjms-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sjms-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cdba121
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sjms-kafka-sink-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-sjms-kafka-connector-sink]]
+= camel-sjms-kafka-connector sink configuration
+
+When using camel-sjms-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms sink connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedReplyTo* | Sets the reply to destination name used for InOut producer endpoints. The type of the reply to destination can be determined by the starting prefix (topic: or queue:) in its name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistent* | Flag used to enable/disable message persistence. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerCount* | Sets the number of producers used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | Flag used to adjust the Time To Live value of produced messages. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefillPool* | Whether to prefill the producer connection pool on startup, or create connections lazy when needed. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.responseTimeOut* | Sets the amount of time we should wait before timing out a InOut response. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sjms-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sjms-kafka-source-connector.adoc
new file mode 100644
index 0000000..f409a91
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sjms-kafka-source-connector.adoc
@@ -0,0 +1,76 @@
+// kafka-connector options: START
+[[camel-sjms-kafka-connector-source]]
+= camel-sjms-kafka-connector source configuration
+
+When using camel-sjms-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms source connector supports 50 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerCount* | Sets the number of consumer listeners used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionId* | Sets the durable subscription Id required for durable topics. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageSelector* | Sets the JMS Message selector syntax. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchCount* | If transacted sets the number of messages to process before committing a transaction. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchTimeout* | Sets timeout (in millis) for batch transactions, the value should be 1000 or higher. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sjms2-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sjms2-kafka-sink-connector.adoc
new file mode 100644
index 0000000..12fcb56
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sjms2-kafka-sink-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-sjms2-kafka-connector-sink]]
+= camel-sjms2-kafka-connector sink configuration
+
+When using camel-sjms2-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms2 sink connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namedReplyTo* | Sets the reply to destination name used for InOut producer endpoints. The type of the reply to destination can be determined by the starting prefix (topic: or queue:) in its name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.persistent* | Flag used to enable/disable message persistence. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.producerCount* | Sets the number of producers used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | Flag used to adjust the Time To Live value of produced messages. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowNullBody* | Whether to allow sending messages with no body. If this option is false and the message body is null, then an JMSException is thrown. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefillPool* | Whether to prefill the producer connection pool on startup, or create connections lazy when needed. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.responseTimeOut* | Sets the amount of time we should wait before timing out a InOut response. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sjms2-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sjms2-kafka-source-connector.adoc
new file mode 100644
index 0000000..6a95307
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sjms2-kafka-source-connector.adoc
@@ -0,0 +1,79 @@
+// kafka-connector options: START
+[[camel-sjms2-kafka-connector-source]]
+= camel-sjms2-kafka-connector source configuration
+
+When using camel-sjms2-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sjms2-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sjms2 source connector supports 53 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destinationType* | The kind of destination to use One of: [queue] [topic] | "queue" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.destinationName* | DestinationName is a JMS queue or topic name. By default, the destinationName is interpreted as a queue name. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.acknowledgementMode* | The JMS acknowledgement name, which is one of: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE One of: [SESSION_TRANSACTED] [CLIENT_ACKNOWLEDGE] [AUTO_ACKNOWLEDGE] [DUPS_OK_ACKNOWLEDGE] | "AUTO_ACKNOWLEDGE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerCount* | Sets the number of consumer listeners used for this endpoint. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durable* | Sets topic consumer to durable. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.durableSubscriptionId* | Sets the durable subscription Id required for durable topics. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shared* | Sets the consumer to shared. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.subscriptionId* | Sets the subscription Id, required for durable or shared topics. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageSelector* | Sets the JMS Message selector syntax. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStartListener* | Whether to startup the consumer message listener asynchronously, when starting a route. For example if a JmsConsumer cannot get a connection to a remote JMS broker, then it may block while retrying and/or failover. This will cause Camel to block while starting routes. By setting this option to true, you will let routes startup, while the JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous mode. If this option is used, then beware that if the connection could not be established, then an exception is logged at WARN level, and the consumer will not be able to receive messages; You can then restart the route to retry. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.asyncStopListener* | Whether to stop the consumer message listener asynchronously, when stopping a route. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionCount* | The maximum number of connections available to this endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionResource* | Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionListener* | Specifies the JMS Exception Listener that is to be notified of any underlying JMS exceptions. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeAllJMSXProperties* | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapJmsMessage* | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. See section about how mapping works below for more details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLoggingLevel* | Allows to configure the default errorHandler logging level for logging uncaught exceptions. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "WARN" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.errorHandlerLogStackTrace* | Allows to control whether stacktraces should be logged or not, by the default errorHandler. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Specifies whether to use transacted mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchCount* | If transacted sets the number of messages to process before committing a transaction. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionBatchTimeout* | Sets timeout (in millis) for batch transactions, the value should be 1000 or higher. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionCommitStrategy* | Sets the commit strategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sharedJMSSession* | Specifies whether to share JMS session with other SJMS endpoints. Turn this off if your route is accessing to multiple JMS providers. If you need transaction against multiple JMS providers, use jms component to leverage XA transaction. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionCount* | The maximum number of connections available to endpoints started under this component | "1" | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.reconnectBackOff* | Backoff in millis on consumer pool reconnection attempts | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.reconnectOnError* | Try to apply reconnection logic on consumer pool | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionClientId* | The client ID to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionFactory* | A ConnectionFactory is required to enable the SjmsComponent. It can be set directly or set set as part of a ConnectionResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionMaxWait* | The max wait time in millis to block and wait on free connection when the pool is exhausted when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionResource* | A ConnectionResource is an interface that allows for customization and container control of the ConnectionFactory. See Plugable Connection Resource Management for further details. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionTestOnBorrow* | When using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource then should each javax.jms.Connection be tested (calling start) before returned from the pool. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.destinationCreationStrategy* | To use a custom DestinationCreationStrategy. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.jmsKeyFormatStrategy* | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides one implementation out of the box: default. The default strategy will safely marshal dots and hyphens (. and -). Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it using the # notation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.messageCreatedStrategy* | To use the given MessageCreatedStrategy which are invoked when Camel creates new instances of javax.jms.Message objects when Camel is sending a JMS message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.timedTaskManager* | To use a custom TimedTaskManager | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionPassword* | The password to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.connectionUsername* | The username to use when creating javax.jms.Connection when using the default org.apache.camel.component.sjms.jms.ConnectionFactoryResource. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sjms2.transactionCommitStrategy* | To configure which kind of commit strategy to use. Camel provides two implementations out of the box, default and batch. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-slack-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-slack-kafka-sink-connector.adoc
new file mode 100644
index 0000000..9fcc71b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-slack-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-slack-kafka-connector-sink]]
+= camel-slack-kafka-connector sink configuration
+
+When using camel-slack-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-slack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-slack sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.channel* | The channel name (syntax #name) or slackuser (syntax userName) to send a message directly to an user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.iconEmoji* | Use a Slack emoji as an avatar | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.iconUrl* | The avatar that the component will use when sending message to a channel or user. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | This is the username that the bot will have when sending messages to a channel or user. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.webhookUrl* | The incoming webhook URL | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.webhookUrl* | The incoming webhook URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-slack-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-slack-kafka-source-connector.adoc
new file mode 100644
index 0000000..f064b92
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-slack-kafka-source-connector.adoc
@@ -0,0 +1,54 @@
+// kafka-connector options: START
+[[camel-slack-kafka-connector-source]]
+= camel-slack-kafka-connector source configuration
+
+When using camel-slack-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-slack-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-slack source connector supports 28 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.channel* | The channel name (syntax #name) or slackuser (syntax userName) to send a message directly to an user. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxResults* | The Max Result for the poll | "10" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverUrl* | The Server URL of the Slack instance | "https://slack.com" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.token* | The token to use | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.webhookUrl* | The incoming webhook URL | null | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.slack.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smpp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smpp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..692786f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smpp-kafka-sink-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-smpp-kafka-connector-sink]]
+= camel-smpp-kafka-connector sink configuration
+
+When using camel-smpp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpp sink connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddr* | Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. | "1717" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrNpi* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrTon* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazySessionCreation* | Sessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started. Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present, Camel will use these data to connect to the SMSC. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.numberingPlanIndicator* | Defines the numeric plan indicator (NPI) to be used in the SME. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priorityFlag* | Allows the originating SME to assign a priority level to the short message. Only for SubmitSm and SubmitMulti. Four Priority Levels are supported: 0: Level 0 (lowest) priority 1: Level 1 priority 2: Level 2 priority 3: Level 3 (highest) priority One of: [0] [1] [2] [3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolId* | The protocol id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.registeredDelivery* | Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: 0: No SMSC delivery receipt requested. 1: SMSC delivery receipt requested where final delivery outcome is success or failure. 2: SMSC delivery receipt requested where the final delivery outcome is delivery failure. One of: [0] [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replaceIfPresentFlag* | Used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service type match the same fields in the new message. The following replace if present flag values are defined: 0: Don't replace 1: Replace One of: [0] [1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceType* | The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined: CMT: Cellular Messaging CPT: Cellular Paging VMN: Voice Mail Notification VMA: Voice Mail Alerting WAP: Wireless Application Protocol USSD: Unstructured Supplementary Services Data One of: [CMT] [CPT] [VMN] [VMA] [WAP] [USSD] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddr* | Defines the address of SME (Short Message Entity) which originated this message. | "1616" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrNpi* | Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrTon* | Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.typeOfNumber* | Defines the type of number (TON) to be used in the SME. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smpp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smpp-kafka-source-connector.adoc
new file mode 100644
index 0000000..76dd940
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smpp-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-smpp-kafka-connector-source]]
+= camel-smpp-kafka-connector source configuration
+
+When using camel-smpp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpp source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressRange* | You can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpp.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smpps-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smpps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3dd699a
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smpps-kafka-sink-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-smpps-kafka-connector-sink]]
+= camel-smpps-kafka-connector sink configuration
+
+When using camel-smpps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpps sink connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddr* | Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. | "1717" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrNpi* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.destAddrTon* | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm, SubmitMulti, CancelSm and DataSm. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazySessionCreation* | Sessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started. Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present, Camel will use these data to connect to the SMSC. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.numberingPlanIndicator* | Defines the numeric plan indicator (NPI) to be used in the SME. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priorityFlag* | Allows the originating SME to assign a priority level to the short message. Only for SubmitSm and SubmitMulti. Four Priority Levels are supported: 0: Level 0 (lowest) priority 1: Level 1 priority 2: Level 2 priority 3: Level 3 (highest) priority One of: [0] [1] [2] [3] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocolId* | The protocol id | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.registeredDelivery* | Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: 0: No SMSC delivery receipt requested. 1: SMSC delivery receipt requested where final delivery outcome is success or failure. 2: SMSC delivery receipt requested where the final delivery outcome is delivery failure. One of: [0] [1] [2] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replaceIfPresentFlag* | Used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service type match the same fields in the new message. The following replace if present flag values are defined: 0: Don't replace 1: Replace One of: [0] [1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceType* | The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined: CMT: Cellular Messaging CPT: Cellular Paging VMN: Voice Mail Notification VMA: Voice Mail Alerting WAP: Wireless Application Protocol USSD: Unstructured Supplementary Services Data One of: [CMT] [CPT] [VMN] [VMA] [WAP] [USSD] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddr* | Defines the address of SME (Short Message Entity) which originated this message. | "1616" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrNpi* | Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum) One of: [0] [1] [2] [3] [6] [8] [9] [10] [13] [18] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceAddrTon* | Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.typeOfNumber* | Defines the type of number (TON) to be used in the SME. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated One of: [0] [1] [2] [3] [4] [5] [6] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smpps-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smpps-kafka-source-connector.adoc
new file mode 100644
index 0000000..6a3e174
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smpps-kafka-source-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-smpps-kafka-connector-source]]
+= camel-smpps-kafka-connector source configuration
+
+When using camel-smpps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smpps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smpps source connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname for the SMSC server to use. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | Port number for the SMSC server to use. | "2775" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialReconnectDelay* | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxReconnect* | Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response | 2147483647 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectDelay* | Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.splittingPolicy* | You can specify a policy for handling long messages: ALLOW - the default, long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long. One of: [ALLOW] [REJECT] [TRUNCATE] | "ALLOW" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemType* | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.addressRange* | You can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enquireLinkTimer* | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC. | "5000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionStateListener* | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transactionTimer* | Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME). | "10000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alphabet* | Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet One of: [0] [4] [8] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataCoding* | Defines the data coding according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.encoding* | Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti. | "ISO-8859-1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy. | "3128" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUsername* | If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHeaders* | These headers will be passed to the proxy server while establishing the connection. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for connecting to SMSC server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.systemId* | The system id (username) for connecting to SMSC server. | "smppclient" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usingSSL* | Whether using SSL with the smpps protocol | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smpps.configuration* | To use the shared SmppConfiguration as configuration. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smtp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smtp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c5da0ed
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smtp-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-smtp-kafka-connector-sink]]
+= camel-smtp-kafka-connector sink configuration
+
+When using camel-smtp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtp sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smtp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smtp-kafka-source-connector.adoc
new file mode 100644
index 0000000..2e0dd5b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smtp-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-smtp-kafka-connector-source]]
+= camel-smtp-kafka-connector source configuration
+
+When using camel-smtp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtp source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtp.useGlobalSslContextParameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smtps-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smtps-kafka-sink-connector.adoc
new file mode 100644
index 0000000..2db97a6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smtps-kafka-sink-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-smtps-kafka-connector-sink]]
+= camel-smtps-kafka-connector sink configuration
+
+When using camel-smtps-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtps sink connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bcc* | Sets the BCC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cc* | Sets the CC email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.from* | The from email address | "camel@localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.subject* | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.to* | Sets the To email address. Separate multiple email addresses with comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailSender* | To use a custom org.apache.camel.component.mail.JavaMailSender for sending emails. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-smtps-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-smtps-kafka-source-connector.adoc
new file mode 100644
index 0000000..35124cc
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-smtps-kafka-source-connector.adoc
@@ -0,0 +1,92 @@
+// kafka-connector options: START
+[[camel-smtps-kafka-connector-source]]
+= camel-smtps-kafka-connector source configuration
+
+When using camel-smtps-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-smtps-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-smtps source connector supports 66 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The mail server host name | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | The port number of the mail server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.closeFolder* | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well, then the consumer keep the folder open between polls. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.copyTo* | After processing a mail message, it can be copied to a mail folder with the given name. You can override this configuration value, with a header with the key copyTo, allowing you to copy messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delete* | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disconnect* | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handleFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer, then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Specifies the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to set a limit of e.g. 1000 to avoid downloading thousands of files when the server starts up. Set a value of 0 or negative to disable this option. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mimeDecodeHeaders* | This option enables transparent MIME decoding and unfolding for mail headers. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moveTo* | After processing a mail message, it can be moved to a mail folder with the given name. You can override this configuration value, with a header with the key moveTo, allowing you to move messages to folder names configured at runtime. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.peek* | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server, which allows us to rollback the mail message if there is an error processing in Camel. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.skipFailedMessage* | If the mail consumer cannot retrieve a given mail message, then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.unseen* | Whether to limit by unseen mails only. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fetchSize* | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server, if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case, where Camel will not consume any messages at all. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.folderName* | The folder to poll. | "INBOX" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mailUidGenerator* | A pluggable MailUidGenerator that allows to use custom logic to generate UUID of the mail message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapMailMessage* | Specifies whether Camel should map the received mail message to Camel body/headers/attachments. If set to true, the body of the mail message is mapped to the body of the Camel IN message, the mail headers are mapped to IN headers, and the attachments to Camel IN attachment message. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.postProcessAction* | Refers to an MailBoxPostProcessAction for doing post processing tasks on the mailbox once the normal processing ended. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.additionalJavaMailProperties* | Sets additional java mail properties, that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alternativeBodyHeader* | Specifies the key to an IN message header that contains an alternative email body. For example, if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients, set the alternative mail body with this key as a header. | "CamelMailAlternativeBody" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.attachmentsContentTransfer EncodingResolver* | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.binding* | Sets the binding used to convert from a Camel message to and from a Mail message | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | The connection timeout in milliseconds. | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentType* | The mail message content type. Use text/html for HTML mails. | "text/plain" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.debugMode* | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUnsupportedCharset* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ignoreUriScheme* | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.javaMailProperties* | Sets the java mail options. Will clear any default properties and only use the properties provided for this method. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.session* | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource, such as a JavaEE container. When using a custom mail session, then the hostname and port from the mail session will be used (if configured on the session). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useInlineAttachments* | Whether to use disposition inline or attachment. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepository* | A pluggable repository org.apache.camel.spi.IdempotentRepository which allows to cluster consuming from the same mailbox, and let the repository coordinate whether a mail message is valid for the consumer to process. By default no repository is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.idempotentRepositoryRemoveOn Commit* | When using idempotent repository, then when the mail message has been successfully processed and is committed, should the message id be removed from the idempotent repository (default) or be kept in the repository. By default its assumed the message id is unique and has no value to be kept in the repository, because the mail message will be marked as seen/moved or deleted to prevent it from being consumed again. And therefore having the message id stored in the idempotent repository has little value. However this option allows to store the message id, for whatever reason you may have. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchTerm* | Refers to a javax.mail.search.SearchTerm which allows to filter mails based on search criteria such as subject, body, from, sent after a certain date etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortTerm* | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The username for login | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.configuration* | Sets the Mail configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.contentTypeResolver* | Resolver to determine Content-Type for file attachments. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.smtps.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-snmp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-snmp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..d97b62f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-snmp-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-snmp-kafka-connector-sink]]
+= camel-snmp-kafka-connector sink configuration
+
+When using camel-snmp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-snmp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-snmp sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.oids* | Defines which values you are interested in. Please have a look at the Wikipedia to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids=1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.protocol* | Here you can select which protocol to use. You can use either udp or tcp. One of: [tcp] [udp] | "udp" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retries* | Defines how often a retry is made before canceling the request. | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpCommunity* | Sets the community octet string for the snmp request. | "public" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpContextEngineId* | Sets the context engine ID field of the scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpContextName* | Sets the context name field of this scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.snmpVersion* | Sets the snmp version for the request. The value 0 means SNMPv1, 1 means SNMPv2c, and the value 3 means SNMPv3 One of: [0] [1] [3] | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the timeout value for the request in millis. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.type* | Which operation to perform such as poll, trap, etc. One of: [TRAP] [POLL] [GET_NEXT] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationPassphrase* | The authentication passphrase. If not null, authenticationProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authenticationProtocol* | Authentication protocol to use if security level is set to enable authentication The possible values are: MD5, SHA1 One of: [MD5] [SHA1] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privacyPassphrase* | The privacy passphrase. If not null, privacyProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privacyProtocol* | The privacy protocol ID to be associated with this user. If set to null, this user only supports unencrypted messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityLevel* | Sets the security level for this target. The supplied security level must be supported by the security model dependent information associated with the security name set for this target. The value 1 means: No authentication and no encryption. Anyone can create and read messages with this security level The value 2 means: Authentication and no encryption. Only the one with the right authentication key can create messages with this security level, but anyone can read the contents of the message. The value 3 means: Authentication and encryption. Only the one with the right authentication key can create messages with this security level, and only the one with the right encryption/decryption key can read the contents of the message. One of: [1] [2] [3] | 3 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.securityName* | Sets the security name to be used with this target. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-snmp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-snmp-kafka-source-connector.adoc
new file mode 100644
index 0000000..b0f708c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-snmp-kafka-source-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-snmp-kafka-connector-source]]
+= camel-snmp-kafka-connector source configuration
+
+When using camel-snmp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-snmp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-snmp source connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number of the SNMP enabled device | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.oids* | Defines which values you are interested in. Please have a look at the Wikipedia to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids=1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1 | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.protocol* | Here you can select which protocol to use. You can use either udp or tcp. One of: [tcp] [udp] | "udp" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retries* | Defines how often a retry is made before canceling the request. | 2 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpCommunity* | Sets the community octet string for the snmp request. | "public" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpContextEngineId* | Sets the context engine ID field of the scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpContextName* | Sets the context name field of this scoped PDU. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.snmpVersion* | Sets the snmp version for the request. The value 0 means SNMPv1, 1 means SNMPv2c, and the value 3 means SNMPv3 One of: [0] [1] [3] | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the timeout value for the request in millis. | 1500 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Which operation to perform such as poll, trap, etc. One of: [TRAP] [POLL] [GET_NEXT] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Sets update rate in seconds | 60000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.treeList* | Sets the flag whether the scoped PDU will be displayed as the list if it has child elements in its tree | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationPassphrase* | The authentication passphrase. If not null, authenticationProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authenticationProtocol* | Authentication protocol to use if security level is set to enable authentication The possible values are: MD5, SHA1 One of: [MD5] [SHA1] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privacyPassphrase* | The privacy passphrase. If not null, privacyProtocol must also be not null. RFC3414 11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privacyProtocol* | The privacy protocol ID to be associated with this user. If set to null, this user only supports unencrypted messages. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityLevel* | Sets the security level for this target. The supplied security level must be supported by the security model dependent information associated with the security name set for this target. The value 1 means: No authentication and no encryption. Anyone can create and read messages with this security level The value 2 means: Authentication and no encryption. Only the one with the right authentication key can create messages with this security level, but anyone can read the contents of the message. The value 3 means: Authentication and encryption. Only the one with the right authentication key can create messages with this security level, and only the one with the right encryption/decryption key can read the contents of the message. One of: [1] [2] [3] | 3 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.securityName* | Sets the security name to be used with this target. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.snmp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-solr-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-solr-kafka-sink-connector.adoc
new file mode 100644
index 0000000..6d52e0d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-solr-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-solr-kafka-connector-sink]]
+= camel-solr-kafka-connector sink configuration
+
+When using camel-solr-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-solr-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-solr sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Hostname and port for the solr server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowCompression* | Server side must support gzip or deflate for this to have any effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | connectionTimeout on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultMaxConnectionsPerHost* | maxConnectionsPerHost on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirects* | indicates whether redirects are used to get to the Solr server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetries* | Maximum number of retries to attempt in the event of transient errors | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | maxTotalConnection on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestHandler* | Set the request handler to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingQueueSize* | Set the queue size for the StreamingUpdateSolrServer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingThreadCount* | Set the number of threads for the StreamingUpdateSolrServer | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets password for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets username for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collection* | Set the collection name which the solrCloud server could use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zkHost* | Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.solr.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.solr.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-solrCloud-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-solrCloud-kafka-sink-connector.adoc
new file mode 100644
index 0000000..12132ec
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-solrCloud-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-solrCloud-kafka-connector-sink]]
+= camel-solrCloud-kafka-connector sink configuration
+
+When using camel-solrCloud-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-solrCloud-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-solrCloud sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Hostname and port for the solr server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowCompression* | Server side must support gzip or deflate for this to have any effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | connectionTimeout on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultMaxConnectionsPerHost* | maxConnectionsPerHost on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirects* | indicates whether redirects are used to get to the Solr server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetries* | Maximum number of retries to attempt in the event of transient errors | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | maxTotalConnection on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestHandler* | Set the request handler to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingQueueSize* | Set the queue size for the StreamingUpdateSolrServer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingThreadCount* | Set the number of threads for the StreamingUpdateSolrServer | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets password for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets username for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collection* | Set the collection name which the solrCloud server could use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zkHost* | Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.solrcloud.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.solrcloud.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-solrs-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-solrs-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3958542
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-solrs-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-solrs-kafka-connector-sink]]
+= camel-solrs-kafka-connector sink configuration
+
+When using camel-solrs-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-solrs-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-solrs sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.url* | Hostname and port for the solr server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowCompression* | Server side must support gzip or deflate for this to have any effect | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | connectionTimeout on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.defaultMaxConnectionsPerHost* | maxConnectionsPerHost on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.followRedirects* | indicates whether redirects are used to get to the Solr server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetries* | Maximum number of retries to attempt in the event of transient errors | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTotalConnections* | maxTotalConnection on the underlying HttpConnectionManager | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestHandler* | Set the request handler to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soTimeout* | Read timeout on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingQueueSize* | Set the queue size for the StreamingUpdateSolrServer | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.streamingThreadCount* | Set the number of threads for the StreamingUpdateSolrServer | 2 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets password for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets username for basic auth plugin enabled servers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.collection* | Set the collection name which the solrCloud server could use | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zkHost* | Set the ZooKeeper host information which the solrCloud could use, such as zkhost=localhost:8123. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.solrs.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.solrs.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-soroush-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-soroush-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e42a493
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-soroush-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-soroush-kafka-connector-sink]]
+= camel-soroush-kafka-connector sink configuration
+
+When using camel-soroush-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-soroush-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-soroush sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.action* | The action to do. One of: [sendMessage] [getMessage] [uploadFile] [downloadFile] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.connectionTimeout* | Connection timeout in ms when connecting to soroush API | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxConnectionRetry* | Maximum connection retry when fail to connect to soroush API, if the quota is reached, MaximumConnectionRetryReachedException is thrown for that message. | 4 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoDownload* | Automatically download SoroushMessage.fileUrl and SoroushMessage.thumbnailUrl if exists for the message and store them in SoroushMessage.file and SoroushMessage.thumbnail field | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoUploadFile* | Automatically upload attachments when a message goes to the sendMessage endpoint and the SoroushMessage.file (SoroushMessage.thumbnail) has been set and SoroushMessage.fileUrl(SoroushMessage.thumbnailUrl) is null | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.downloadThumbnail* | If true, when downloading an attached file, thumbnail will be downloaded if provided in the message. Otherwise, only the file will be downloaded | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceDownload* | Force to download SoroushMessage.fileUrl(SoroushMessage.thumbnailUrl) if exists, even if the SoroushMessage.file(SoroushMessage.thumbnail) was not null in that message | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.forceUpload* | Force to upload SoroushMessage.file(SoroushMessage.thumbnail) if exists, even if the SoroushMessage.fileUrl(SoroushMessage.thumbnailUrl) is not null in the message | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.backOffStrategy* | The strategy to backoff in case of connection failure. Currently 3 strategies are supported: 1. Exponential (default): It multiply retryWaitingTime by retryExponentialCoefficient after each connection failure. 2. Linear: It increase retryWaitingTime by retryLinearIncrement after each connection failure. 3. Fixed: Always use retryWaitingTime as the time between retries. | "Exponential" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxRetryWaitingTime* | Maximum amount of time (in millisecond) a thread wait before retrying failed request. | 3600000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reconnectIdleConnectionTimeout* | The timeout in millisecond to reconnect the existing getMessage connection to ensure that the connection is always live and does not dead without notifying the bot. this value should not be changed. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryExponentialCoefficient* | Coefficient to compute back off time when using Exponential Back Off strategy | 2L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryLinearIncrement* | The amount of time (in millisecond) which adds to waiting time when using Linear back off strategy | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.retryWaitingTime* | Waiting time before retry failed request (Millisecond). If backOffStrategy is not Fixed this is the based value for computing back off waiting time. the first retry is always happen immediately after failure and retryWaitingTime do not apply to the first retry. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authorizationToken* | The authorization token for using the bot. if uri path does not contain authorization token, this token will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.authorizationToken* | The default Soroush authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-soroush-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-soroush-kafka-source-connector.adoc
new file mode 100644
index 0000000..aee3d07
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-soroush-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-soroush-kafka-connector-source]]
+= camel-soroush-kafka-connector source configuration
+
+When using camel-soroush-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-soroush-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-soroush source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.action* | The action to do. One of: [sendMessage] [getMessage] [uploadFile] [downloadFile] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.connectionTimeout* | Connection timeout in ms when connecting to soroush API | 30000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxConnectionRetry* | Maximum connection retry when fail to connect to soroush API, if the quota is reached, MaximumConnectionRetryReachedException is thrown for that message. | 4 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of Thread created by consumer in the route. if you use this method for parallelism, it is guaranteed that messages from same user always execute in the same thread and therefore messages from the same user are processed sequentially. Default value notice: using SoroushBotSingleThreadConsumer | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queueCapacityPerThread* | Maximum capacity of each queue when concurrentConsumers is greater than 1. if a queue become full, every message that should go to that queue will be dropped. If bridgeErrorHandler is set to true, an exchange with CongestionException is directed to ErrorHandler. You can then processed the error using onException(CongestionException.class) route. Default value notice: infinite capacity | 0 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backOffStrategy* | The strategy to backoff in case of connection failure. Currently 3 strategies are supported: 1. Exponential (default): It multiply retryWaitingTime by retryExponentialCoefficient after each connection failure. 2. Linear: It increase retryWaitingTime by retryLinearIncrement after each connection failure. 3. Fixed: Always use retryWaitingTime as the time between retries. | "Exponential" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxRetryWaitingTime* | Maximum amount of time (in millisecond) a thread wait before retrying failed request. | 3600000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.reconnectIdleConnection Timeout* | The timeout in millisecond to reconnect the existing getMessage connection to ensure that the connection is always live and does not dead without notifying the bot. this value should not be changed. | 300000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retryExponentialCoefficient* | Coefficient to compute back off time when using Exponential Back Off strategy | 2L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retryLinearIncrement* | The amount of time (in millisecond) which adds to waiting time when using Linear back off strategy | 10000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retryWaitingTime* | Waiting time before retry failed request (Millisecond). If backOffStrategy is not Fixed this is the based value for computing back off waiting time. the first retry is always happen immediately after failure and retryWaitingTime do not apply to the first retry. | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authorizationToken* | The authorization token for using the bot. if uri path does not contain authorization token, this token will be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.soroush.authorizationToken* | The default Soroush authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spark-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spark-kafka-sink-connector.adoc
new file mode 100644
index 0000000..abda8b5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spark-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-spark-kafka-connector-sink]]
+= camel-spark-kafka-connector sink configuration
+
+When using camel-spark-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spark-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spark sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.endpointType* | Type of the endpoint (rdd, dataframe, hive). One of: [rdd] [dataframe] [hive] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.collect* | Indicates if results should be collected or counted. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataFrame* | DataFrame to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataFrameCallback* | Function performing action against an DataFrame. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rdd* | RDD to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rddCallback* | Function performing action against an RDD. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.rdd* | RDD to compute against. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.rddCallback* | Function performing action against an RDD. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spark-rest-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spark-rest-kafka-source-connector.adoc
new file mode 100644
index 0000000..2023252
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spark-rest-kafka-source-connector.adoc
@@ -0,0 +1,53 @@
+// kafka-connector options: START
+[[camel-spark-rest-kafka-connector-source]]
+= camel-spark-rest-kafka-connector source configuration
+
+When using camel-spark-rest-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spark-rest-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spark-rest source connector supports 27 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.verb* | get, post, put, patch, delete, head, trace, connect, or options. One of: [get] [post] [put] [patch] [delete] [head] [trace] [connect] [options] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.path* | The content path which support Spark syntax. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.accept* | Accept type such as: 'text/xml', or 'application/json'. By default we accept all kinds of types. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.disableStreamCache* | Determines whether or not the raw input stream from Spark HttpRequest#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Spark raw stream. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mapHeaders* | If this option is enabled, then during binding from Spark to Camel Message then the headers will be mapped as well (eg added as header to the Camel Message as well). You can turn off this option to disable this. The headers can still be accessed from the org.apache.camel.component.sparkrest.SparkMessage message with the method getRequest() that returns the Spark HTTP request instance. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.urlDecodeHeaders* | If this option is enabled, then during binding from Spark to Camel Message then the header values will be URL decoded (eg %20 will be a space character.) | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sparkBinding* | To use a custom SparkBinding to map to/from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.ipAddress* | Set the IP address that Spark should listen on. If not called the default address is '0.0.0.0'. | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.port* | Port number. Will by default use 4567 | 4567 | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.maxThreads* | Maximum number of threads in Spark thread-pool (shared globally) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.minThreads* | Minimum number of threads in Spark thread-pool (shared globally) | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.sparkBinding* | To use a custom SparkBinding to map to/from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.sparkConfiguration* | To use the shared SparkConfiguration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.timeOutMillis* | Thread idle timeout in millis where threads that has been idle for a longer period will be terminated from the thread pool | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.keystoreFile* | Configures connection to be secure to use the keystore file | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.keystorePassword* | Configures connection to be secure to use the keystore password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.truststoreFile* | Configures connection to be secure to use the truststore file | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spark-rest.truststorePassword* | Configures connection to be secure to use the truststore password | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-splunk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-splunk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..07bb3e1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-splunk-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-splunk-kafka-connector-sink]]
+= camel-splunk-kafka-connector sink configuration
+
+When using camel-splunk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-splunk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-splunk sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name has no purpose | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.app* | Splunk app | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionTimeout* | Timeout in MS when connecting to Splunk server | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Splunk host. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.owner* | Splunk owner | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.port* | Splunk port | 8089 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.scheme* | Splunk scheme | "https" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.eventHost* | Override the default Splunk event host field | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.index* | Splunk index to write to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.raw* | Should the payload be inserted raw | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.source* | Splunk source argument | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceType* | Splunk sourcetype argument | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpReceiverPort* | Splunk tcp receiver port | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslProtocol* | Set the ssl protocol to use One of: [TLSv1.2] [TLSv1.1] [TLSv1] [SSLv3] | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Username for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSunHttpsHandler* | Use sun.net.www.protocol.https.Handler Https handler to establish the Splunk Connection. Can be useful when running in application servers to avoid app. server https handling. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.splunkConfigurationFactory* | To use the SplunkConfigurationFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-splunk-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-splunk-kafka-source-connector.adoc
new file mode 100644
index 0000000..312a546
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-splunk-kafka-source-connector.adoc
@@ -0,0 +1,68 @@
+// kafka-connector options: START
+[[camel-splunk-kafka-connector-source]]
+= camel-splunk-kafka-connector source configuration
+
+When using camel-splunk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-splunk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-splunk source connector supports 42 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name has no purpose | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.app* | Splunk app | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionTimeout* | Timeout in MS when connecting to Splunk server | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.host* | Splunk host. | "localhost" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.owner* | Splunk owner | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.port* | Splunk port | 8089 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheme* | Splunk scheme | "https" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | A number that indicates the maximum number of entities to return. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.earliestTime* | Earliest time of the search time window. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initEarliestTime* | Initial start offset of the first search | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latestTime* | Latest time of the search time window. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.savedSearch* | The name of the query saved in Splunk to run | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.search* | The Splunk query to run | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.streaming* | Sets streaming mode. Streaming mode sends exchanges as they are received, rather than in a batch. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslProtocol* | Set the ssl protocol to use One of: [TLSv1.2] [TLSv1.1] [TLSv1] [SSLv3] | "TLSv1.2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Username for Splunk | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useSunHttpsHandler* | Use sun.net.www.protocol.https.Handler Https handler to establish the Splunk Connection. Can be useful when running in application servers to avoid app. server https handling. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.splunk.splunkConfigurationFactory* | To use the SplunkConfigurationFactory | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-batch-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-batch-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3dfb4ce
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-batch-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-spring-batch-kafka-connector-sink]]
+= camel-spring-batch-kafka-connector sink configuration
+
+When using camel-spring-batch-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-batch-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-batch sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.jobName* | The name of the Spring Batch job located in the registry. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.jobFromHeader* | Explicitly defines if the jobName should be taken from the headers instead of the URI. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobLauncher* | Explicitly specifies a JobLauncher to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.jobRegistry* | Explicitly specifies a JobRegistry to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.jobLauncher* | Explicitly specifies a JobLauncher to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.jobRegistry* | Explicitly specifies a JobRegistry to be used. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-batch.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-event-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-event-kafka-sink-connector.adoc
new file mode 100644
index 0000000..77fcac8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-event-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-spring-event-kafka-connector-sink]]
+= camel-spring-event-kafka-connector sink configuration
+
+When using camel-spring-event-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-event-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-event sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-event-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-event-kafka-source-connector.adoc
new file mode 100644
index 0000000..dfa12c8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-event-kafka-source-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-spring-event-kafka-connector-source]]
+= camel-spring-event-kafka-connector source configuration
+
+When using camel-spring-event-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-event-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-event source connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-event.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-integration-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-integration-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c424e87
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-integration-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-spring-integration-kafka-connector-sink]]
+= camel-spring-integration-kafka-connector sink configuration
+
+When using camel-spring-integration-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-integration-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-integration sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.defaultChannel* | The default channel name which is used by the Spring Integration Spring context. It will equal to the inputChannel name for the Spring Integration consumer and the outputChannel name for the Spring Integration provider. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.inOut* | The exchange pattern that the Spring integration endpoint should use. If inOut=true then a reply channel is expected, either from the Spring Integration Message header or configured on the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputChannel* | The Spring integration output channel name that is used to send messages to Spring integration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-integration-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-integration-kafka-source-connector.adoc
new file mode 100644
index 0000000..489b308
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-integration-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-spring-integration-kafka-connector-source]]
+= camel-spring-integration-kafka-connector source configuration
+
+When using camel-spring-integration-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-integration-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-integration source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.defaultChannel* | The default channel name which is used by the Spring Integration Spring context. It will equal to the inputChannel name for the Spring Integration consumer and the outputChannel name for the Spring Integration provider. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.inOut* | The exchange pattern that the Spring integration endpoint should use. If inOut=true then a reply channel is expected, either from the Spring Integration Message header or configured on the endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.inputChannel* | The Spring integration input channel name that this endpoint wants to consume from Spring integration. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-integration.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-ldap-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-ldap-kafka-sink-connector.adoc
new file mode 100644
index 0000000..eb5ce92
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-ldap-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-spring-ldap-kafka-connector-sink]]
+= camel-spring-ldap-kafka-connector sink configuration
+
+When using camel-spring-ldap-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-ldap-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-ldap sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.templateName* | Name of the Spring LDAP Template bean | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | The LDAP operation to be performed. One of: [SEARCH] [BIND] [UNBIND] [AUTHENTICATE] [MODIFY_ATTRIBUTES] [FUNCTION_DRIVEN] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.scope* | The scope of the search operation. One of: [object] [onelevel] [subtree] | "subtree" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ldap.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ldap.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-redis-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-redis-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fa80500
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-redis-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-spring-redis-kafka-connector-sink]]
+= camel-spring-redis-kafka-connector sink configuration
+
+When using camel-spring-redis-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-redis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-redis sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The host where Redis server is running. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Redis server port number | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.channels* | List of topic names or name patterns to subscribe to. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.command* | Default command, which can be overridden by message header. Notice the consumer only supports the following commands: PSUBSCRIBE and SUBSCRIBE One of: [PING] [SET] [GET] [QUIT] [EXISTS] [DEL] [TYPE] [FLUSHDB] [KEYS] [RANDOMKEY] [RENAME] [RENAMENX] [RENAMEX] [DBSIZE] [EXPIRE] [EXPIREAT] [TTL] [SELECT] [MOVE] [FLUSHALL] [GETSET] [MGET] [SETNX] [SETEX] [MSET] [MSETNX] [DECRBY] [DECR] [INCRBY] [INCR] [APPEND] [SUBSTR] [HSET] [HGET] [HSETNX] [HMSET] [HMGET] [HINCRBY] [HEXISTS] [HDEL] [HLEN] [HKEYS] [HVALS] [HGETALL] [RPUSH] [LPUSH] [LLEN] [LRANGE] [LTRIM] [LINDEX] [LSET] [LREM] [LPOP] [RPOP] [RPOPLPUSH] [SADD] [SMEMBERS] [SREM] [SPOP] [SMOVE] [SCARD] [SISMEMBER] [SINTER] [SINTERSTORE] [SUNION] [SUNIONSTORE] [SDIFF] [SDIFFSTORE] [SRANDMEMBER] [ZADD] [ZRANGE] [ZREM] [ZINCRBY] [ZRANK] [ZREVRANK] [ZREVRANGE] [ZCARD] [ZSCORE] [MULTI] [DISCARD] [EXEC] [WATCH] [UNWATCH] [SORT] [BLPOP] [BRPOP] [AUTH] [SUBSCRIBE] [PUBLISH] [UNSUBSCRIBE] [PSUBSCRIBE] [PUNSUBSCRIBE] [ZCOUNT] [ZRANGEBYSCORE] [ZREVRANGEBYSCORE] [ZREMRANGEBYRANK] [ZREMRANGEBYSCORE] [ZUNIONSTORE] [ZINTERSTORE] [SAVE] [BGSAVE] [BGREWRITEAOF] [LASTSAVE] [SHUTDOWN] [INFO] [MONITOR] [SLAVEOF] [CONFIG] [STRLEN] [SYNC] [LPUSHX] [PERSIST] [RPUSHX] [ECHO] [LINSERT] [DEBUG] [BRPOPLPUSH] [SETBIT] [GETBIT] [SETRANGE] [GETRANGE] [PEXPIRE] [PEXPIREAT] [GEOADD] [GEODIST] [GEOHASH] [GEOPOS] [GEORADIUS] [GEORADIUSBYMEMBER] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionFactory* | Reference to a pre-configured RedisConnectionFactory instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.redisTemplate* | Reference to a pre-configured RedisTemplate instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serializer* | Reference to a pre-configured RedisSerializer instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-redis-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-redis-kafka-source-connector.adoc
new file mode 100644
index 0000000..26b9b42
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-redis-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-spring-redis-kafka-connector-source]]
+= camel-spring-redis-kafka-connector source configuration
+
+When using camel-spring-redis-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-redis-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-redis source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The host where Redis server is running. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Redis server port number | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.channels* | List of topic names or name patterns to subscribe to. Multiple names can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.command* | Default command, which can be overridden by message header. Notice the consumer only supports the following commands: PSUBSCRIBE and SUBSCRIBE One of: [PING] [SET] [GET] [QUIT] [EXISTS] [DEL] [TYPE] [FLUSHDB] [KEYS] [RANDOMKEY] [RENAME] [RENAMENX] [RENAMEX] [DBSIZE] [EXPIRE] [EXPIREAT] [TTL] [SELECT] [MOVE] [FLUSHALL] [GETSET] [MGET] [SETNX] [SETEX] [MSET] [MSETNX] [DECRBY] [DECR] [INCRBY] [INCR] [APPEND] [SUBSTR] [HSET] [HGET] [HSETNX] [HMSET] [HMGET] [HINCRBY] [HEXISTS] [HDEL] [HLEN] [HKEYS] [HVALS] [HGETALL] [RPUSH] [LPUSH] [LLEN] [LRANGE] [LTRIM] [LINDEX] [LSET] [LREM] [LPOP] [RPOP] [RPOPLPUSH] [SADD] [SMEMBERS] [SREM] [SPOP] [SMOVE] [SCARD] [SISMEMBER] [SINTER] [SINTERSTORE] [SUNION] [SUNIONSTORE] [SDIFF] [SDIFFSTORE] [SRANDMEMBER] [ZADD] [ZRANGE] [ZREM] [ZINCRBY] [ZRANK] [ZREVRANK] [ZREVRANGE] [ZCARD] [ZSCORE] [MULTI] [DISCARD] [EXEC] [WATCH] [UNWATCH] [SORT] [BLPOP] [BRPOP] [AUTH] [SUBSCRIBE] [PUBLISH] [UNSUBSCRIBE] [PSUBSCRIBE] [PUNSUBSCRIBE] [ZCOUNT] [ZRANGEBYSCORE] [ZREVRANGEBYSCORE] [ZREMRANGEBYRANK] [ZREMRANGEBYSCORE] [ZUNIONSTORE] [ZINTERSTORE] [SAVE] [BGSAVE] [BGREWRITEAOF] [LASTSAVE] [SHUTDOWN] [INFO] [MONITOR] [SLAVEOF] [CONFIG] [STRLEN] [SYNC] [LPUSHX] [PERSIST] [RPUSHX] [ECHO] [LINSERT] [DEBUG] [BRPOPLPUSH] [SETBIT] [GETBIT] [SETRANGE] [GETRANGE] [PEXPIRE] [PEXPIREAT] [GEOADD] [GEODIST] [GEOHASH] [GEOPOS] [GEORADIUS] [GEORADIUSBYMEMBER] | "SET" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionFactory* | Reference to a pre-configured RedisConnectionFactory instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.redisTemplate* | Reference to a pre-configured RedisTemplate instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serializer* | Reference to a pre-configured RedisSerializer instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.listenerContainer* | Reference to a pre-configured RedisMessageListenerContainer instance to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-redis.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-ws-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-ws-kafka-sink-connector.adoc
new file mode 100644
index 0000000..21beb1b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-ws-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-spring-ws-kafka-connector-sink]]
+= camel-spring-ws-kafka-connector sink configuration
+
+When using camel-spring-ws-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-ws sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.webServiceEndpointUri* | The default Web Service endpoint uri to use for the producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFilter* | Option to provide a custom MessageFilter. For example when you want to process your headers or attachments by your own. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowResponseAttachment Override* | Option to override soap response attachments in in/out exchange with attachments from the actual service layer. If the invoked service appends or rewrites the soap attachments this option when set to true, allows the modified soap attachments to be overwritten in in/out message attachments | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowResponseHeaderOverride* | Option to override soap response header in in/out exchange with header info from the actual service layer. If the invoked service appends or rewrites the soap header this option when set to true, allows the modified soap header to be overwritten in in/out message headers | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.faultAction* | Signifies the value for the faultAction response WS-Addressing Fault Action header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.faultTo* | Signifies the value for the faultAction response WS-Addressing FaultTo header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageFactory* | Option to provide a custom WebServiceMessageFactory. For example when you want Apache Axiom to handle web service messages instead of SAAJ. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageIdStrategy* | Option to provide a custom MessageIdStrategy to control generation of unique message ids. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.messageSender* | Option to provide a custom WebServiceMessageSender. For example to perform authentication or use alternative transports | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputAction* | Signifies the value for the response WS-Addressing Action header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.replyTo* | Signifies the value for the replyTo response WS-Addressing ReplyTo header that is provided by the method. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.soapAction* | SOAP action to include inside a SOAP request when accessing remote web services | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the socket read timeout (in milliseconds) while invoking a webservice using the producer, see URLConnection.setReadTimeout() and CommonsHttpMessageSender.setReadTimeout(). This option works when using the built-in message sender implementations: CommonsHttpMessageSender and HttpUrlConnectionMessageSender. One of these implementations will be used by default for HTTP based services unless you customize the Spring WS configuration options supplied to the component. If you are using a non-standard sender, it is assumed that you will handle your own timeout configuration. The built-in message sender HttpComponentsMessageSender is considered instead of CommonsHttpMessageSender which has been deprecated, see HttpComponentsMessageSender.setReadTimeout(). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.webServiceTemplate* | Option to provide a custom WebServiceTemplate. This allows for full control over client-side web services handling; like adding a custom interceptor or specifying a fault resolver, message sender or message factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.wsAddressingAction* | WS-Addressing 1.0 action header to include when accessing web services. The To header is set to the address of the web service as specified in the endpoint URI (default Spring-WS behavior). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-spring-ws-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-spring-ws-kafka-source-connector.adoc
new file mode 100644
index 0000000..d67b71c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-spring-ws-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-spring-ws-kafka-connector-source]]
+= camel-spring-ws-kafka-connector source configuration
+
+When using camel-spring-ws-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-spring-ws-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-spring-ws source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | Endpoint mapping type if endpoint mapping is used. rootqname - Offers the option to map web service requests based on the qualified name of the root element contained in the message. soapaction - Used to map web service requests based on the SOAP action specified in the header of the message. uri - In order to map web service requests that target a specific URI. xpathresult - Used to map web service requests based on the evaluation of an XPath expression against the incoming message. The result of the evaluation should match the XPath result specified in the endpoint URI. beanname - Allows you to reference an org.apache.camel.component.spring.ws.bean.CamelEndpointDispatcher object in order to integrate with existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc One of: [ROOT_QNAME] [ACTION] [TO] [SOAP_ACTION] [XPATHRESULT] [URI] [URI_PATH] [BEANNAME] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.lookupKey* | Endpoint mapping key if endpoint mapping is used | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.expression* | The XPath expression to use when option type=xpathresult. Then this option is required to be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.messageFilter* | Option to provide a custom MessageFilter. For example when you want to process your headers or attachments by your own. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endpointDispatcher* | Spring org.springframework.ws.server.endpoint.MessageEndpoint for dispatching messages received by Spring-WS to a Camel endpoint, to integrate with existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.endpointMapping* | Reference to an instance of org.apache.camel.component.spring.ws.bean.CamelEndpointMapping in the Registry/ApplicationContext. Only one bean is required in the registry to serve all Camel/Spring-WS endpoints. This bean is auto-discovered by the MessageDispatcher and used to map requests to Camel endpoints based on characteristics specified on the endpoint (like root QName, SOAP action, etc) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.spring-ws.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sql-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sql-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e9fff55
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sql-kafka-sink-connector.adoc
@@ -0,0 +1,50 @@
+// kafka-connector options: START
+[[camel-sql-kafka-connector-sink]]
+= camel-sql-kafka-connector sink configuration
+
+When using camel-sql-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sql sink connector supports 24 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.query* | Sets the SQL query to perform. You can externalize the query by using file: or classpath: as prefix and specify the location of the file. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.sink.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.batch* | Enables or disables batch mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noop* | If set, will ignore the results of the SQL query and use the existing IN message as the OUT message for the continuation of processing | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageBodyForSql* | Whether to use the message body as the SQL and then headers for parameters. If this option is enabled then the SQL in the uri is not used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. This option is default true | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sql-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sql-kafka-source-connector.adoc
new file mode 100644
index 0000000..fa92c69
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sql-kafka-source-connector.adoc
@@ -0,0 +1,75 @@
+// kafka-connector options: START
+[[camel-sql-kafka-connector-source]]
+= camel-sql-kafka-connector source configuration
+
+When using camel-sql-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sql-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sql source connector supports 49 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.query* | Sets the SQL query to perform. You can externalize the query by using file: or classpath: as prefix and specify the location of the file. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowNamedParameters* | Whether to allow using named parameters in the queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.dataSourceRef* | Sets the reference to a DataSource to lookup from the registry, to use for communicating with the database. | null | ConfigDef.Importance.LOW
+| *camel.source.endpoint.outputClass* | Specify the full package and class name to use as conversion when outputType=SelectOne. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputHeader* | Store the query result in a header instead of the message body. By default, outputHeader == null and the query result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the query result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.outputType* | Make the output of consumer or producer to SelectList as List of Map, or SelectOne as single Java object in the following way: a) If the query has only single column, then that JDBC Column object is returned. (such as SELECT COUNT( ) FROM PROJECT will return a Long object. b) If the query has more than one column, then it will return a Map of that result. c) If the outputClass is set, then it will convert the query result into an Java bean object by calling all the setters that match the column names. It will assume your class has a default constructor to create instance with. d) If the query resulted in more than one rows, it throws an non-unique result exception. StreamList streams the result of the query using an Iterator. This can be used with the Splitter EIP in streaming mode to process the ResultSet in streaming fashion. One of: [SelectOne] [SelectList] [StreamList] | "SelectList" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.separator* | The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders. Notice if you use named parameters, then a Map type is used instead. The default value is comma | "," | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.breakBatchOnConsumeFail* | Sets whether to break batch if onConsume failed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.expectedUpdateCount* | Sets an expected update count to validate when using onConsume. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxMessagesPerPoll* | Sets the maximum number of messages to poll | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsume* | After processing each row then this query can be executed, if the Exchange was processed successfully, for example to mark the row as processed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeBatchComplete* | After processing the entire batch, this query can be executed to bulk update rows etc. The query cannot have parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.onConsumeFailed* | After processing each row then this query can be executed, if the Exchange failed, for example to mark the row as failed. The query can have parameter. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.routeEmptyResultSet* | Sets whether empty resultset should be allowed to be sent to the next hop. Defaults to false. So the empty resultset will be filtered out. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.transacted* | Enables or disables transaction. If enabled then if processing an exchange failed then the consumer breaks out processing any further exchanges to cause a rollback eager. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useIterator* | Sets how resultset should be delivered to route. Indicates delivery as either a list or individual object. defaults to true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.processingStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlProcessingStrategy to execute queries when the consumer has processed the rows/batch. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.alwaysPopulateStatement* | If enabled then the populateStatement method from org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, also if there is no expected parameters to be prepared. When this is false then the populateStatement is only invoked if there is 1 or more expected parameters to be set; for example this avoids reading the message body/headers for SQL queries with no parameters. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parametersCount* | If set greater than zero, then Camel will use this count value of parameters to replace instead of querying via JDBC metadata API. This is useful if the JDBC vendor could not return correct parameters count, then user may override instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.placeholder* | Specifies a character that will be replaced to in SQL query. Notice, that it is simple String.replaceAll() operation and no SQL parsing is involved (quoted strings will also change). | "#" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.prepareStatementStrategy* | Allows to plugin to use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to control preparation of the query and prepared statement. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.templateOptions* | Configures the Spring JdbcTemplate with the key/values from the Map | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql.usePlaceholder* | Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. This option is default true | true | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-sql-stored-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-sql-stored-kafka-sink-connector.adoc
new file mode 100644
index 0000000..3a6484b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-sql-stored-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-sql-stored-kafka-connector-sink]]
+= camel-sql-stored-kafka-connector sink configuration
+
+When using camel-sql-stored-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-sql-stored-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-sql-stored sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.template* | Sets the StoredProcedure template to perform | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.batch* | Enables or disables batch mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.function* | Whether this call is for a function. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.noop* | If set, will ignore the results of the template and use the existing IN message as the OUT message for the continuation of processing | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputHeader* | Store the template result in a header instead of the message body. By default, outputHeader == null and the template result is stored in the message body, any existing content in the message body is discarded. If outputHeader is set, the value is used as the name of the header to store the template result and the original message body is preserved. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useMessageBodyForTemplate* | Whether to use the message body as the template and then headers for parameters. If this option is enabled then the template in the uri is not used. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql-stored.dataSource* | Sets the DataSource to use to communicate with the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.sql-stored.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.sql-stored.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ssh-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ssh-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ed9f4d5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ssh-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-ssh-kafka-connector-sink]]
+= camel-ssh-kafka-connector sink configuration
+
+When using camel-ssh-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ssh-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ssh sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Sets the port number for the remote SSH server. | 22 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnUnknownHost* | Specifies whether a connection to an unknown host should fail or not. This value is only checked when the property knownHosts is set. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.knownHostsResource* | Sets the resource path for a known_hosts file | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | "exec" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. From Camel 3.0.0 / 2.25.0, by default Camel will select the first available KeyPair that is loaded. Prior to this, a KeyType of 'ssh-rsa' was enforced by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.pollCommand* | Sets the command string to send to the remote SSH server during every poll cycle. Only works with camel-ssh component being used as a consumer, i.e. from(ssh://...). You may need to end your command with a newline, and that must be URL encoded %0A | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.port* | Sets the port number for the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.configuration* | To use the shared SSH configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. Defaults to ssh-rsa. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-ssh-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-ssh-kafka-source-connector.adoc
new file mode 100644
index 0000000..c57bc72
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-ssh-kafka-source-connector.adoc
@@ -0,0 +1,78 @@
+// kafka-connector options: START
+[[camel-ssh-kafka-connector-source]]
+= camel-ssh-kafka-connector source configuration
+
+When using camel-ssh-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-ssh-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-ssh source connector supports 52 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Sets the port number for the remote SSH server. | 22 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.failOnUnknownHost* | Specifies whether a connection to an unknown host should fail or not. This value is only checked when the property knownHosts is set. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.knownHostsResource* | Sets the resource path for a known_hosts file | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollCommand* | Sets the command string to send to the remote SSH server during every poll cycle. Only works with camel-ssh component being used as a consumer, i.e. from(ssh://...) You may need to end your command with a newline, and that must be URL encoded %0A | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | "exec" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | 100L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. From Camel 3.0.0 / 2.25.0, by default Camel will select the first available KeyPair that is loaded. Prior to this, a KeyType of 'ssh-rsa' was enforced by default. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.host* | Sets the hostname of the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.pollCommand* | Sets the command string to send to the remote SSH server during every poll cycle. Only works with camel-ssh component being used as a consumer, i.e. from(ssh://...). You may need to end your command with a newline, and that must be URL encoded %0A | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.port* | Sets the port number for the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.timeout* | Sets the timeout in milliseconds to wait in establishing the remote SSH server connection. Defaults to 30000 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.channelType* | Sets the channel type to pass to the Channel as part of command execution. Defaults to exec. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.configuration* | To use the shared SSH configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.shellPrompt* | Sets the shellPrompt to be dropped when response is read after command execution | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.sleepForShellPrompt* | Sets the sleep period in milliseconds to wait reading response from shell prompt. Defaults to 100 milliseconds. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResource* | Sets the resource path of the certificate to use for Authentication. Will use ResourceHelperKeyPairProvider to resolve file based certificate, and depends on keyType setting. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.certResourcePassword* | Sets the password to use in loading certResource, if certResource is an encrypted key. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyPairProvider* | Sets the KeyPairProvider reference to use when connecting using Certificates to the remote SSH Server. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.keyType* | Sets the key type to pass to the KeyPairProvider as part of authentication. KeyPairProvider.loadKey(...) will be passed this value. Defaults to ssh-rsa. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.password* | Sets the password to use in connecting to remote SSH server. Requires keyPairProvider to be set to null. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.ssh.username* | Sets the username to use in logging into the remote SSH server. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stax-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stax-kafka-sink-connector.adoc
new file mode 100644
index 0000000..5512258
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stax-kafka-sink-connector.adoc
@@ -0,0 +1,32 @@
+// kafka-connector options: START
+[[camel-stax-kafka-connector-sink]]
+= camel-stax-kafka-connector sink configuration
+
+When using camel-stax-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stax-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stax sink connector supports 6 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.contentHandlerClass* | The FQN class name for the ContentHandler implementation to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stax.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stax.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stomp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stomp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ab0ad55
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stomp-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-stomp-kafka-connector-sink]]
+= camel-stomp-kafka-connector sink configuration
+
+When using camel-stomp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stomp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stomp sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.destination* | Name of the queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.brokerURL* | The URI of the Stomp broker to connect to | "tcp://localhost:61613" | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.customHeaders* | To set custom headers | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | The virtual host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.version* | The stomp version (1.1, or 1.2) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.brokerURL* | The URI of the Stomp broker to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.host* | The virtual host | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.configuration* | To use the shared stomp configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stomp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stomp-kafka-source-connector.adoc
new file mode 100644
index 0000000..15124a8
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stomp-kafka-source-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-stomp-kafka-connector-source]]
+= camel-stomp-kafka-connector source configuration
+
+When using camel-stomp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stomp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stomp source connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.destination* | Name of the queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.brokerURL* | The URI of the Stomp broker to connect to | "tcp://localhost:61613" | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.customHeaders* | To set custom headers | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.host* | The virtual host name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.version* | The stomp version (1.1, or 1.2) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.brokerURL* | The URI of the Stomp broker to connect to | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.host* | The virtual host | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.configuration* | To use the shared stomp configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.headerFilterStrategy* | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.login* | The username | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.passcode* | The password | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stomp.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stream-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stream-kafka-sink-connector.adoc
new file mode 100644
index 0000000..32311e5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stream-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-stream-kafka-connector-sink]]
+= camel-stream-kafka-connector sink configuration
+
+When using camel-stream-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stream sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.kind* | Kind of stream to use such as System.in or System.out. One of: [in] [out] [err] [header] [file] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.encoding* | You can configure the encoding (is a charset name) to use text-based streams (for example, message body is a String object). If not provided, Camel uses the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fileName* | When using the stream:file URI format, this option specifies the filename to stream to/from. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.autoCloseCount* | Number of messages to process before closing stream on Producer side. Never close stream by default (only when Producer is stopped). If more messages are sent, the stream is reopened for another autoCloseCount batch. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.closeOnDone* | This option is used in combination with Splitter and streaming to the same file. The idea is to keep the stream open and only close when the Splitter is done, to improve performance. Mind this requires that you only stream to the same file, and not 2 or more files. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delay* | Initial delay in milliseconds before producing the stream. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.readTimeout* | Sets the read timeout to a specified timeout, in milliseconds. A non-zero value specifies the timeout when reading from Input stream when a connection is established to a resource. If the timeout expires before there is data available for read, a java.net.SocketTimeoutException is raised. A timeout of zero is interpreted as an infinite timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stream-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stream-kafka-source-connector.adoc
new file mode 100644
index 0000000..a63b808
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stream-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-stream-kafka-connector-source]]
+= camel-stream-kafka-connector source configuration
+
+When using camel-stream-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stream-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stream source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.kind* | Kind of stream to use such as System.in or System.out. One of: [in] [out] [err] [header] [file] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.encoding* | You can configure the encoding (is a charset name) to use text-based streams (for example, message body is a String object). If not provided, Camel uses the JVM default Charset. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileName* | When using the stream:file URI format, this option specifies the filename to stream to/from. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fileWatcher* | To use JVM file watcher to listen for file change events to support re-loading files that may be overwritten, somewhat like tail --retry | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupLines* | To group X number of lines in the consumer. For example to group 10 lines and therefore only spit out an Exchange with 10 lines, instead of 1 Exchange per line. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.groupStrategy* | Allows to use a custom GroupStrategy to control how to group lines. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialPromptDelay* | Initial delay in milliseconds before showing the message prompt. This delay occurs only once. Can be used during system startup to avoid message prompts being written while other logging is done to the system out. | 2000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.promptDelay* | Optional delay in milliseconds before showing the message prompt. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.promptMessage* | Message prompt to use when reading from stream:in; for example, you could set this to Enter a command: | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.retry* | Will retry opening the stream if it's overwritten, somewhat like tail --retry If reading from files then you should also enable the fileWatcher option, to make it work reliable. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scanStream* | To be used for continuously reading a stream such as the unix tail command. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scanStreamDelay* | Delay in milliseconds between read attempts when using scanStream. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.readTimeout* | Sets the read timeout to a specified timeout, in milliseconds. A non-zero value specifies the timeout when reading from Input stream when a connection is established to a resource. If the timeout expires before there is data available for read, a java.net.SocketTimeoutException is raised. A timeout of zero is interpreted as an infinite timeout. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stream.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-string-template-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-string-template-kafka-sink-connector.adoc
new file mode 100644
index 0000000..37b140c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-string-template-kafka-sink-connector.adoc
@@ -0,0 +1,35 @@
+// kafka-connector options: START
+[[camel-string-template-kafka-connector-sink]]
+= camel-string-template-kafka-connector sink configuration
+
+When using camel-string-template-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-string-template-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-string-template sink connector supports 9 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiterStart* | The variable start delimiter | "<" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.delimiterStop* | The variable end delimiter | ">" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.string-template.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.string-template.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stub-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stub-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7d0f18f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stub-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-stub-kafka-connector-sink]]
+= camel-stub-kafka-connector sink configuration
+
+When using camel-stub-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stub sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardIfNoConsumers* | Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerTimeout* | offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultBlockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultDiscardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultOfferTimeout* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-stub-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-stub-kafka-source-connector.adoc
new file mode 100644
index 0000000..b01930e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-stub-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-stub-kafka-connector-source]]
+= camel-stub-kafka-connector source configuration
+
+When using camel-stub-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-stub-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-stub source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limitConcurrentConsumers* | Whether to limit the number of concurrentConsumers to the maximum of 500. By default, an exception will be thrown if an endpoint is configured with a greater number. You can disable that check by turning this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use SEDA for Publish-Subscribe messaging. That is, you can send a message to the SEDA queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when polling. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.purgeWhenStopping* | Whether to purge the task queue when stopping the consumer/route. This allows to stop faster, as any pending messages on the queue is discarded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.concurrentConsumers* | Sets the default number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.stub.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-telegram-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-telegram-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fd04a03
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-telegram-kafka-sink-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-telegram-kafka-connector-sink]]
+= camel-telegram-kafka-connector sink configuration
+
+When using camel-telegram-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-telegram-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-telegram sink connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.type* | The endpoint type. Currently, only the 'bots' type is supported. One of: [bots] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.chatId* | The identifier of the chat that will receive the produced messages. Chat ids can be first obtained from incoming messages (eg. when a telegram user starts a conversation with a bot, its client sends automatically a '/start' message containing the chat id). It is an optional parameter, as the chat id can be set dynamically for each outgoing message (using body or headers). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | HTTP proxy host which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | HTTP proxy port which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.authorizationToken* | The authorization token for using the bot (ask the BotFather) | null | ConfigDef.Importance.HIGH
+| *camel.component.telegram.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | "https://api.telegram.org" | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.authorizationToken* | The default Telegram authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-telegram-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-telegram-kafka-source-connector.adoc
new file mode 100644
index 0000000..43eef77
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-telegram-kafka-source-connector.adoc
@@ -0,0 +1,62 @@
+// kafka-connector options: START
+[[camel-telegram-kafka-connector-source]]
+= camel-telegram-kafka-connector source configuration
+
+When using camel-telegram-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-telegram-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-telegram source connector supports 36 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.type* | The endpoint type. Currently, only the 'bots' type is supported. One of: [bots] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | Limit on the number of updates that can be received in a single polling request. | "100" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | Timeout in seconds for long polling. Put 0 for short polling or a bigger number for long polling. Long polling produces shorter response time. | "30" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | The initial in-memory buffer size used when transferring data between Camel and AHC Client. | 4096 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | HTTP proxy host which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | HTTP proxy port which could be used when sending out the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.authorizationToken* | The authorization token for using the bot (ask the BotFather) | null | ConfigDef.Importance.HIGH
+| *camel.component.telegram.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.baseUri* | Can be used to set an alternative base URI, e.g. when you want to test the component against a mock Telegram API | "https://api.telegram.org" | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.client* | To use a custom AsyncHttpClient | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.clientConfig* | To configure the AsyncHttpClient to use a custom com.ning.http.client.AsyncHttpClientConfig instance. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.telegram.authorizationToken* | The default Telegram authorization token to be used when the information is not provided in the endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-thrift-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-thrift-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ff675c1
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-thrift-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-thrift-kafka-connector-sink]]
+= camel-thrift-kafka-connector sink configuration
+
+When using camel-thrift-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-thrift-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-thrift sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The Thrift server host name. This is localhost or 0.0.0.0 (if not defined) when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | The Thrift server port | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.service* | Fully qualified service name from the thrift descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.compressionType* | Protocol compression mechanism type One of: [NONE] [ZLIB] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.exchangeProtocol* | Exchange protocol serialization type One of: [BINARY] [JSON] [SJSON] [COMPACT] | "BINARY" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | The Thrift invoked method name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.negotiationType* | Security negotiation type One of: [PLAINTEXT] [SSL] [SASL] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslParameters* | Configuration parameters for SSL/TLS security negotiation | null | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.useGlobalSslContext Parameters* | Determine if the thrift component is using global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-thrift-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-thrift-kafka-source-connector.adoc
new file mode 100644
index 0000000..bc02ae4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-thrift-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-thrift-kafka-connector-source]]
+= camel-thrift-kafka-connector source configuration
+
+When using camel-thrift-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-thrift-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-thrift source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The Thrift server host name. This is localhost or 0.0.0.0 (if not defined) when being a consumer or remote server host name when using producer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | The Thrift server port | null | ConfigDef.Importance.HIGH
+| *camel.source.path.service* | Fully qualified service name from the thrift descriptor file (package dot service definition name) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.compressionType* | Protocol compression mechanism type One of: [NONE] [ZLIB] | "NONE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangeProtocol* | Exchange protocol serialization type One of: [BINARY] [JSON] [SJSON] [COMPACT] | "BINARY" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.clientTimeout* | Client timeout for consumers | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxPoolSize* | The Thrift server consumer max thread pool size | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.poolSize* | The Thrift server consumer initial thread pool size | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.negotiationType* | Security negotiation type One of: [PLAINTEXT] [SSL] [SASL] | "PLAINTEXT" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslParameters* | Configuration parameters for SSL/TLS security negotiation | null | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.thrift.useGlobalSslContext Parameters* | Determine if the thrift component is using global SSL context parameters | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-tika-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-tika-kafka-sink-connector.adoc
new file mode 100644
index 0000000..a21684c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-tika-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-tika-kafka-connector-sink]]
+= camel-tika-kafka-connector sink configuration
+
+When using camel-tika-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-tika-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-tika sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | Operation type One of: [parse] [detect] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaConfig* | Tika Config | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaConfigUri* | Tika Config Url | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaParseOutputEncoding* | Tika Parse Output Encoding | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tikaParseOutputFormat* | Tika Output Format. Supported output formats. xml: Returns Parsed Content as XML. html: Returns Parsed Content as HTML. text: Returns Parsed Content as Text. textMain: Uses the boilerpipe library to automatically extract the main content from a web page. One of: [xml] [html] [text] [textMain] | "xml" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.tika.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.tika.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-timer-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-timer-kafka-source-connector.adoc
new file mode 100644
index 0000000..5695834
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-timer-kafka-source-connector.adoc
@@ -0,0 +1,43 @@
+// kafka-connector options: START
+[[camel-timer-kafka-connector-source]]
+= camel-timer-kafka-connector source configuration
+
+When using camel-timer-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-timer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-timer source connector supports 17 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.timerName* | The name of the timer | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Miliseconds before first event is triggered. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fixedRate* | Events take place at approximately regular intervals, separated by the specified period. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.includeMetadata* | Whether to include metadata in the exchange such as fired time, timer name, timer count etc. This information is default included. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.period* | If greater than 0, generate periodic events every period milliseconds. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the timer will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.daemon* | Specifies whether or not the thread associated with the timer endpoint runs as a daemon. The default value is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pattern* | Allows you to specify a custom Date pattern to use for setting the time option using URI syntax. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.time* | A java.util.Date the first event should be generated. If using the URI, the pattern expected is: yyyy-MM-dd HH:mm:ss or yyyy-MM-dd'T'HH:mm:ss. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timer* | To use a custom Timer | null | ConfigDef.Importance.MEDIUM
+| *camel.component.timer.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.timer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twilio-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twilio-kafka-sink-connector.adoc
new file mode 100644
index 0000000..86797bf
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twilio-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-twilio-kafka-connector-sink]]
+= camel-twilio-kafka-connector sink configuration
+
+When using camel-twilio-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twilio-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twilio sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.apiName* | What kind of operation to perform One of: [ACCOUNT] [ADDRESS] [APPLICATION] [AVAILABLE_PHONE_NUMBER_COUNTRY] [CALL] [CONFERENCE] [CONNECT_APP] [INCOMING_PHONE_NUMBER] [KEY] [MESSAGE] [NEW_KEY] [NEW_SIGNING_KEY] [NOTIFICATION] [OUTGOING_CALLER_ID] [QUEUE] [RECORDING] [SHORT_CODE] [SIGNING_KEY] [TOKEN] [TRANSCRIPTION] [VALIDATION_REQUEST] [ADDRESS_DEPENDENT_PHONE_NUMBER] [AVAILABLE_PHONE_NUMBER_COUNTRY_LOCAL] [AVAILABLE_PHONE_NUMBER_COUNTRY_MOBILE] [AVAILABLE_PHONE_NUMBER_COUNTRY_TOLL_FREE] [CALL_FEEDBACK] [CALL_FEEDBACK_SUMMARY] [CALL_NOTIFICATION] [CALL_RECORDING] [CONFERENCE_PARTICIPANT] [INCOMING_PHONE_NUMBER_LOCAL] [INCOMING_PHONE_NUMBER_MOBILE] [INCOMING_PHONE_NUMBER_TOLL_FREE] [MESSAGE_FEEDBACK] [MESSAGE_MEDIA] [QUEUE_MEMBER] [RECORDING_ADD_ON_RESULT] [RECORDING_TRANSCRIPTION] [RECORDING_ADD_ON_RESULT_PAYLOAD] [SIP_CREDENTIAL_LIST] [SIP_DOMAIN] [SIP_IP_ACCESS_CONTROL_LIST] [SIP_CREDENTIAL_LIST_CREDENTIAL] [SIP_DOMAIN_CREDENTIAL_LIST_MAPPING] [SIP_DOMAIN_IP_ACCESS_CONTROL_LIST_MAPPING] [SIP_IP_ACCESS_CONTROL_LIST_IP_ADDRESS] [USAGE_RECORD] [USAGE_TRIGGER] [USAGE_RECORD_ALL_TIME] [USAGE_RECORD_DAILY] [USAGE_RECORD_LAST_MONTH] [USAGE_RECORD_MONTHLY] [USAGE_RECORD_THIS_MONTH] [USAGE_RECORD_TODAY] [USAGE_RECORD_YEARLY] [USAGE_RECORD_YESTERDAY] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.methodName* | What sub operation to use for the selected operation One of: [create] [delete] [fetch] [read] [update] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.restClient* | To use the shared REST client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.accountSid* | The account SID to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.password* | Auth token for the account. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.username* | The account to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twilio-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twilio-kafka-source-connector.adoc
new file mode 100644
index 0000000..bab7114
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twilio-kafka-source-connector.adoc
@@ -0,0 +1,57 @@
+// kafka-connector options: START
+[[camel-twilio-kafka-connector-source]]
+= camel-twilio-kafka-connector source configuration
+
+When using camel-twilio-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twilio-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twilio source connector supports 31 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.apiName* | What kind of operation to perform One of: [ACCOUNT] [ADDRESS] [APPLICATION] [AVAILABLE_PHONE_NUMBER_COUNTRY] [CALL] [CONFERENCE] [CONNECT_APP] [INCOMING_PHONE_NUMBER] [KEY] [MESSAGE] [NEW_KEY] [NEW_SIGNING_KEY] [NOTIFICATION] [OUTGOING_CALLER_ID] [QUEUE] [RECORDING] [SHORT_CODE] [SIGNING_KEY] [TOKEN] [TRANSCRIPTION] [VALIDATION_REQUEST] [ADDRESS_DEPENDENT_PHONE_NUMBER] [AVAILABLE_PHONE_NUMBER_COUNTRY_LOCAL] [AVAILABLE_PHONE_NUMBER_COUNTRY_MOBILE] [AVAILABLE_PHONE_NUMBER_COUNTRY_TOLL_FREE] [CALL_FEEDBACK] [CALL_FEEDBACK_SUMMARY] [CALL_NOTIFICATION] [CALL_RECORDING] [CONFERENCE_PARTICIPANT] [INCOMING_PHONE_NUMBER_LOCAL] [INCOMING_PHONE_NUMBER_MOBILE] [INCOMING_PHONE_NUMBER_TOLL_FREE] [MESSAGE_FEEDBACK] [MESSAGE_MEDIA] [QUEUE_MEMBER] [RECORDING_ADD_ON_RESULT] [RECORDING_TRANSCRIPTION] [RECORDING_ADD_ON_RESULT_PAYLOAD] [SIP_CREDENTIAL_LIST] [SIP_DOMAIN] [SIP_IP_ACCESS_CONTROL_LIST] [SIP_CREDENTIAL_LIST_CREDENTIAL] [SIP_DOMAIN_CREDENTIAL_LIST_MAPPING] [SIP_DOMAIN_IP_ACCESS_CONTROL_LIST_MAPPING] [SIP_IP_ACCESS_CONTROL_LIST_IP_ADDRESS] [USAGE_RECORD] [USAGE_TRIGGER] [USAGE_RECORD_ALL_TIME] [USAGE_RECORD_DAILY] [USAGE_RECORD_LAST_MONTH] [USAGE_RECORD_MONTHLY] [USAGE_RECORD_THIS_MONTH] [USAGE_RECORD_TODAY] [USAGE_RECORD_YEARLY] [USAGE_RECORD_YESTERDAY] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.methodName* | What sub operation to use for the selected operation One of: [create] [delete] [fetch] [read] [update] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.restClient* | To use the shared REST client | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.accountSid* | The account SID to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.password* | Auth token for the account. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twilio.username* | The account to use. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twitter-directmessage-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twitter-directmessage-kafka-sink-connector.adoc
new file mode 100644
index 0000000..204642e
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twitter-directmessage-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-twitter-directmessage-kafka-connector-sink]]
+= camel-twitter-directmessage-kafka-connector sink configuration
+
+When using camel-twitter-directmessage-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-directmessage-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-directmessage sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.user* | The user name to send a direct message. This will be ignored for consumer. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Host* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Password* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Port* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy User* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken Secret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumer Secret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twitter-directmessage-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twitter-directmessage-kafka-source-connector.adoc
new file mode 100644
index 0000000..bd465df
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twitter-directmessage-kafka-source-connector.adoc
@@ -0,0 +1,80 @@
+// kafka-connector options: START
+[[camel-twitter-directmessage-kafka-connector-source]]
+= camel-twitter-directmessage-kafka-connector source configuration
+
+When using camel-twitter-directmessage-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-directmessage-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-directmessage source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.user* | The user name to send a direct message. This will be ignored for consumer. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Endpoint type to use. One of: [polling] [direct] | "polling" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distanceMetric* | Used by the geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. One of: [km] [mi] | "km" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedMode* | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latitude* | Used by the geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locations* | Bounding boxes, created by pairs of lat/lons. Can be used for filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.longitude* | Used by the geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.radius* | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | Limiting number of results per page. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterOld* | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lang* | The lang string ISO_639-1 which will be used for searching | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfPages* | The number of pages result which you want camel-twitter to consume. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sinceId* | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | To filter by user ids for filter. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortById* | Sorts by id, so the oldest are first, and newest last. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.basic PropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Host* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Password* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy Port* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.httpProxy User* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.accessToken Secret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-directmessage.consumer Secret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twitter-search-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twitter-search-kafka-sink-connector.adoc
new file mode 100644
index 0000000..77e7f49
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twitter-search-kafka-sink-connector.adoc
@@ -0,0 +1,48 @@
+// kafka-connector options: START
+[[camel-twitter-search-kafka-connector-sink]]
+= camel-twitter-search-kafka-connector sink configuration
+
+When using camel-twitter-search-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-search-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-search sink connector supports 22 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.keywords* | The search query, use the keywords AND, OR, - and () to narrow the search results. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twitter-search-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twitter-search-kafka-source-connector.adoc
new file mode 100644
index 0000000..fb4826d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twitter-search-kafka-source-connector.adoc
@@ -0,0 +1,80 @@
+// kafka-connector options: START
+[[camel-twitter-search-kafka-connector-source]]
+= camel-twitter-search-kafka-connector source configuration
+
+When using camel-twitter-search-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-search-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-search source connector supports 54 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.keywords* | The search query, use the keywords AND, OR, - and () to narrow the search results. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Endpoint type to use. One of: [polling] [direct] | "polling" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distanceMetric* | Used by the geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. One of: [km] [mi] | "km" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedMode* | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latitude* | Used by the geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locations* | Bounding boxes, created by pairs of lat/lons. Can be used for filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.longitude* | Used by the geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.radius* | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | Limiting number of results per page. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterOld* | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lang* | The lang string ISO_639-1 which will be used for searching | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfPages* | The number of pages result which you want camel-twitter to consume. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sinceId* | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | To filter by user ids for filter. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortById* | Sorts by id, so the oldest are first, and newest last. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-search.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twitter-timeline-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twitter-timeline-kafka-sink-connector.adoc
new file mode 100644
index 0000000..4ee1395
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twitter-timeline-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-twitter-timeline-kafka-connector-sink]]
+= camel-twitter-timeline-kafka-connector sink configuration
+
+When using camel-twitter-timeline-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-timeline-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-timeline sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.timelineType* | The timeline type to produce/consume. One of: [PUBLIC] [HOME] [USER] [MENTIONS] [RETWEETSOFME] [UNKNOWN] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.user* | The username when using timelineType=user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-twitter-timeline-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-twitter-timeline-kafka-source-connector.adoc
new file mode 100644
index 0000000..4cb8915
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-twitter-timeline-kafka-source-connector.adoc
@@ -0,0 +1,81 @@
+// kafka-connector options: START
+[[camel-twitter-timeline-kafka-connector-source]]
+= camel-twitter-timeline-kafka-connector source configuration
+
+When using camel-twitter-timeline-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-twitter-timeline-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-twitter-timeline source connector supports 55 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.timelineType* | The timeline type to produce/consume. One of: [PUBLIC] [HOME] [USER] [MENTIONS] [RETWEETSOFME] [UNKNOWN] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.user* | The username when using timelineType=user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.type* | Endpoint type to use. One of: [polling] [direct] | "polling" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.distanceMetric* | Used by the geography search, to search by radius using the configured metrics. The unit can either be mi for miles, or km for kilometers. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. One of: [km] [mi] | "km" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.extendedMode* | Used for enabling full text from twitter (eg receive tweets that contains more than 140 characters). | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.latitude* | Used by the geography search to search by latitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.locations* | Bounding boxes, created by pairs of lat/lons. Can be used for filter. A pair is defined as lat,lon. And multiple paris can be separated by semi colon. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.longitude* | Used by the geography search to search by longitude. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.radius* | Used by the geography search to search by radius. You need to configure all the following options: longitude, latitude, radius, and distanceMetric. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.count* | Limiting number of results per page. | "5" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterOld* | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lang* | The lang string ISO_639-1 which will be used for searching | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.numberOfPages* | The number of pages result which you want camel-twitter to consume. | "1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sinceId* | The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running. | 1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userIds* | To filter by user ids for filter. Multiple values can be separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sortById* | Sorts by id, so the oldest are first, and newest last. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyHost* | The http proxy host which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyPort* | The http proxy port which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpProxyUser* | The http proxy user which can be used for the camel-twitter. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessTokenSecret* | The access secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerKey* | The consumer key. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.consumerSecret* | The consumer secret. Can also be configured on the TwitterComponent level instead. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyHost* | The http proxy host which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPassword* | The http proxy password which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyPort* | The http proxy port which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.httpProxyUser* | The http proxy user which can be used for the camel-twitter. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.accessTokenSecret* | The access token secret | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.twitter-timeline.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-undertow-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-undertow-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ce975a9
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-undertow-kafka-sink-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-undertow-kafka-connector-sink]]
+= camel-undertow-kafka-connector sink configuration
+
+When using camel-undertow-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-undertow-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-undertow sink connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cookieHandler* | Configure a cookie handler to maintain a HTTP session | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keepAlive* | Setting to ensure socket is not closed due to inactivity | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.options* | Sets additional channel options. The options that can be used are defined in org.xnio.Options. To configure from endpoint uri, then prefix each option with option., such as option.close-abort=true&option.send-buffer=8192 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.preserveHostHeader* | If the option is true, UndertowProducer will set the Host header to the value contained in the current exchange Host header, useful in reverse proxy applications where you want the Host header received by the downstream server to reflect the URL called by the upstream client, this allows applications which use the Host header to generate accurate URL's for a proxied service. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reuseAddresses* | Setting to facilitate socket multiplexing | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.tcpNoDelay* | Setting to improve TCP protocol performance | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.throwExceptionOnFailure* | Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transferException* | If enabled and an Exchange failed processing on the consumer side and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeout* | Timeout in milliseconds when sending to a websocket channel. The default timeout is 30000 (30 seconds). | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | To send to all websocket subscribers. Can be used to configure on endpoint level, instead of having to use the UndertowConstants.SEND_TO_ALL header on the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-undertow-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-undertow-kafka-source-connector.adoc
new file mode 100644
index 0000000..c8321ad
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-undertow-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-undertow-kafka-connector-source]]
+= camel-undertow-kafka-connector source configuration
+
+When using camel-undertow-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-undertow-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-undertow source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.httpURI* | The url of the HTTP endpoint to use. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.useStreaming* | For HTTP endpoint: if true, text and binary messages will be wrapped as java.io.InputStream before they are passed to an Exchange; otherwise they will be passed as byte. For WebSocket endpoint: if true, text and binary messages will be wrapped as java.io.Reader and java.io.InputStream respectively before they are passed to an Exchange; otherwise they will be passed as String and byte respectively. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLog* | Whether or not the consumer should write access log | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpMethodRestrict* | Used to only allow consuming if the HttpMethod matches, such as GET/POST/PUT etc. Multiple methods can be specified separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.matchOnUriPrefix* | Whether or not the consumer should try to find a target consumer by matching the URI prefix if no exact match is found. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.optionsEnabled* | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.handlers* | Specifies a comma-delimited set of io.undertow.server.HttpHandler instances to lookup in your Registry. These handlers are added to the Undertow handler chain (for example, to add security). Important: You can not use different handlers with different Undertow endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessLogReceiver* | Which Undertow AccessLogReciever should be used Will use JBossLoggingAccessLogReceiver if not specifid | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.undertowHttpBinding* | To use a custom UndertowHttpBinding to control the mapping between Camel message and undertow. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fireWebSocketChannelEvents* | if true, the consumer will post notifications to the route when a new WebSocket peer connects, disconnects, etc. See UndertowConstants.EVENT_TYPE and EventType. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.muteException* | If enabled and an Exchange failed processing on the consumer side the response's body won't contain the exception's stack trace. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.hostOptions* | To configure common options, such as thread pools | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.undertowHttpBinding* | To use a custom HttpBinding to control the mapping between Camel message and HttpClient. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.undertow.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-validator-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-validator-kafka-sink-connector.adoc
new file mode 100644
index 0000000..17d4594
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-validator-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-validator-kafka-connector-sink]]
+= camel-validator-kafka-connector sink configuration
+
+When using camel-validator-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-validator-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-validator sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | URL to a local resource on the classpath, or a reference to lookup a bean in the Registry, or a full URL to a remote resource or resource on the file system which contains the XSD to validate against. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.failOnNullBody* | Whether to fail if no body exists. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullHeader* | Whether to fail if no header exists when validating against a header. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To validate against a header instead of the message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorHandler* | To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolver* | To use a custom LSResourceResolver. Do not use together with resourceResolverFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI. The default resource resolver factory resturns a resource resolver which can read files from the class path and file system. Do not use together with resourceResolver. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaFactory* | To use a custom javax.xml.validation.SchemaFactory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaLanguage* | Configures the W3C XML Schema Namespace URI. | "http://www.w3.org/2001/XMLSchema" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.useSharedSchema* | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.validator.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.validator.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.validator.resourceResolverFactory* | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-velocity-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-velocity-kafka-sink-connector.adoc
new file mode 100644
index 0000000..1b988fd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-velocity-kafka-sink-connector.adoc
@@ -0,0 +1,37 @@
+// kafka-connector options: START
+[[camel-velocity-kafka-connector-sink]]
+= camel-velocity-kafka-connector sink configuration
+
+When using camel-velocity-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-velocity-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-velocity sink connector supports 11 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the resource. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Sets whether to use resource content cache or not | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.encoding* | Character encoding of the resource content. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loaderCache* | Enables / disables the velocity resource loader cache which is enabled by default | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.propertiesFile* | The URI of the properties file which is used for VelocityEngine initialization. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.velocity.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.velocity.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.velocity.velocityEngine* | To use the VelocityEngine otherwise a new engine is created | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-vertx-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-vertx-kafka-sink-connector.adoc
new file mode 100644
index 0000000..ee56f2c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-vertx-kafka-sink-connector.adoc
@@ -0,0 +1,39 @@
+// kafka-connector options: START
+[[camel-vertx-kafka-connector-sink]]
+= camel-vertx-kafka-connector sink configuration
+
+When using camel-vertx-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vertx-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vertx sink connector supports 13 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.address* | Sets the event bus address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.pubSub* | Whether to use publish/subscribe instead of point to point when sending to a vertx endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.host* | Hostname for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.port* | Port for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.timeout* | Timeout in seconds to wait for clustered Vertx EventBus to be ready. The default value is 60. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertx* | To use the given vertx EventBus instead of creating a new embedded EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxOptions* | Options to use for creating vertx | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxFactory* | To use a custom VertxFactory implementation | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-vertx-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-vertx-kafka-source-connector.adoc
new file mode 100644
index 0000000..14d0761
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-vertx-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-vertx-kafka-connector-source]]
+= camel-vertx-kafka-connector source configuration
+
+When using camel-vertx-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vertx-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vertx source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.address* | Sets the event bus address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.pubSub* | Whether to use publish/subscribe instead of point to point when sending to a vertx endpoint. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.host* | Hostname for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.port* | Port for creating an embedded clustered EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.timeout* | Timeout in seconds to wait for clustered Vertx EventBus to be ready. The default value is 60. | 60 | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertx* | To use the given vertx EventBus instead of creating a new embedded EventBus | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxOptions* | Options to use for creating vertx | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vertx.vertxFactory* | To use a custom VertxFactory implementation | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-vm-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-vm-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f0354df
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-vm-kafka-sink-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-vm-kafka-connector-sink]]
+= camel-vm-kafka-connector sink configuration
+
+When using camel-vm-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vm sink connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardIfNoConsumers* | Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.discardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failIfNoConsumers* | Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.offerTimeout* | offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value. | 30000L | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.waitForTaskToComplete* | Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always] | "IfReplyExpected" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultBlockWhenFull* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultDiscardWhenFull* | Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultOfferTimeout* | Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-vm-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-vm-kafka-source-connector.adoc
new file mode 100644
index 0000000..4497771
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-vm-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-vm-kafka-connector-source]]
+= camel-vm-kafka-connector source configuration
+
+When using camel-vm-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-vm-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-vm source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | Name of queue | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.size* | The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.concurrentConsumers* | Number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limitConcurrentConsumers* | Whether to limit the number of concurrentConsumers to the maximum of 500. By default, an exception will be thrown if an endpoint is configured with a greater number. You can disable that check by turning this option off. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.multipleConsumers* | Specifies whether multiple consumers are allowed. If enabled, you can use SEDA for Publish-Subscribe messaging. That is, you can send a message to the SEDA queue and have each consumer receive a copy of the message. When enabled, this option should be specified on every consumer endpoint. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollTimeout* | The timeout used when polling. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.purgeWhenStopping* | Whether to purge the task queue when stopping the consumer/route. This allows to stop faster, as any pending messages on the queue is discarded. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.queue* | Define the queue instance which will be used by the endpoint | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.concurrentConsumers* | Sets the default number of concurrent threads processing exchanges. | 1 | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.defaultQueueFactory* | Sets the default queue factory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.vm.queueSize* | Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold). | 1000 | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-weather-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-weather-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7cc4644
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-weather-kafka-sink-connector.adoc
@@ -0,0 +1,60 @@
+// kafka-connector options: START
+[[camel-weather-kafka-connector-sink]]
+= camel-weather-kafka-connector sink configuration
+
+When using camel-weather-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-weather-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-weather sink connector supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The name value is not used. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.appid* | APPID ID used to authenticate the user connected to the API Server | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.headerName* | To store the weather result in this header instead of the message body. This is useable if you want to keep current message body as-is. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.language* | Language of the response. One of: [en] [ru] [it] [es] [sp] [uk] [ua] [de] [pt] [ro] [pl] [fi] [nl] [fr] [bg] [sv] [se] [zh_tw] [zh] [zh_cn] [tr] [hr] [ca] | "en" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mode* | The output format of the weather data. One of: [HTML] [JSON] [XML] | "JSON" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.period* | If null, the current weather will be returned, else use values of 5, 7, 14 days. Only the numeric value for the forecast period is actually parsed, so spelling, capitalisation of the time period is up to you (its ignored) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.units* | The units for temperature measurement. One of: [IMPERIAL] [METRIC] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.weatherApi* | The API to be use (current, forecast/3 hour, forecast daily, station) One of: [Current] [Station] [Hourly] [Daily] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpConnectionManager* | To use a custom HttpConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cnt* | Number of results to be found | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ids* | List of id's of city/stations. You can separate multiple ids by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lat* | Latitude of location. You can use lat and lon options instead of location. For boxed queries this is the bottom latitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.location* | If null Camel will try and determine your current location using the geolocation of your ip address, else specify the city,country. For well known city names, Open Weather Map will determine the best fit, but multiple results may be returned. Hence specifying and country as well will return more accurate data. If you specify current as the location then the component will try to get the current latitude and longitude and use that to get the weather details. You can use lat and lon options instead of location. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lon* | Longitude of location. You can use lat and lon options instead of location. For boxed queries this is the left longtitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.rightLon* | For boxed queries this is the right longtitude. Needs to be used in combination with topLat and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topLat* | For boxed queries this is the top latitude. Needs to be used in combination with rightLon and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zip* | Zip-code, e.g. 94040,us | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.zoom* | For boxed queries this is the zoom. Needs to be used in combination with rightLon and topLat. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthDomain* | Domain for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthHost* | Optional host for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthMethod* | Authentication method for proxy, either as Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyAuthUsername* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.HIGH
+| *camel.component.weather.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-weather-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-weather-kafka-source-connector.adoc
new file mode 100644
index 0000000..1f7177c
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-weather-kafka-source-connector.adoc
@@ -0,0 +1,78 @@
+// kafka-connector options: START
+[[camel-weather-kafka-connector-source]]
+= camel-weather-kafka-connector source configuration
+
+When using camel-weather-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-weather-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-weather source connector supports 52 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.name* | The name value is not used. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.appid* | APPID ID used to authenticate the user connected to the API Server | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.headerName* | To store the weather result in this header instead of the message body. This is useable if you want to keep current message body as-is. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.language* | Language of the response. One of: [en] [ru] [it] [es] [sp] [uk] [ua] [de] [pt] [ro] [pl] [fi] [nl] [fr] [bg] [sv] [se] [zh_tw] [zh] [zh_cn] [tr] [hr] [ca] | "en" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.mode* | The output format of the weather data. One of: [HTML] [JSON] [XML] | "JSON" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.period* | If null, the current weather will be returned, else use values of 5, 7, 14 days. Only the numeric value for the forecast period is actually parsed, so spelling, capitalisation of the time period is up to you (its ignored) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.units* | The units for temperature measurement. One of: [IMPERIAL] [METRIC] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.weatherApi* | The API to be use (current, forecast/3 hour, forecast daily, station) One of: [Current] [Station] [Hourly] [Daily] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.httpConnectionManager* | To use a custom HttpConnectionManager to manage connections | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.cnt* | Number of results to be found | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.ids* | List of id's of city/stations. You can separate multiple ids by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lat* | Latitude of location. You can use lat and lon options instead of location. For boxed queries this is the bottom latitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.location* | If null Camel will try and determine your current location using the geolocation of your ip address, else specify the city,country. For well known city names, Open Weather Map will determine the best fit, but multiple results may be returned. Hence specifying and country as well will return more accurate data. If you specify current as the location then the component will try to get the current latitude and longitude and use that to get the weather details. You can use lat and lon options instead of location. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.lon* | Longitude of location. You can use lat and lon options instead of location. For boxed queries this is the left longtitude. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.rightLon* | For boxed queries this is the right longtitude. Needs to be used in combination with topLat and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topLat* | For boxed queries this is the top latitude. Needs to be used in combination with rightLon and zoom. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.zip* | Zip-code, e.g. 94040,us | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.zoom* | For boxed queries this is the zoom. Needs to be used in combination with rightLon and topLat. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthDomain* | Domain for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthHost* | Optional host for proxy NTLM authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthMethod* | Authentication method for proxy, either as Basic, Digest or NTLM. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthPassword* | Password for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyAuthUsername* | Username for proxy authentication | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyHost* | The proxy host name | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.proxyPort* | The proxy port number | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.HIGH
+| *camel.component.weather.geolocationAccessKey* | The geolocation service now needs an accessKey to be used | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.geolocationRequestHostIP* | The geolocation service now needs to specify the IP associated to the accessKey you're using | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.weather.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-web3j-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-web3j-kafka-sink-connector.adoc
new file mode 100644
index 0000000..bc2e996
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-web3j-kafka-sink-connector.adoc
@@ -0,0 +1,67 @@
+// kafka-connector options: START
+[[camel-web3j-kafka-connector-sink]]
+= camel-web3j-kafka-connector sink configuration
+
+When using camel-web3j-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-web3j-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-web3j sink connector supports 41 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.nodeAddress* | Sets the node address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.addresses* | Contract address or a list of addresses. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromAddress* | The address the transaction is send from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fromBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.fullTransactionObjects* | If true it returns the full transaction objects, if false only the hashes of the transactions. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gasLimit* | The maximum gas allowed in this block. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.privateFor* | A transaction privateFor nodes with public keys in a Quorum network | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.quorumAPI* | If true, this will support Quorum API. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toAddress* | The address the transaction is directed to. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.toBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.topics* | Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.web3j* | The preconfigured Web3j object. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.address* | Contract address. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.atBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.blockHash* | Hash of the block where this transaction was in. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clientId* | A random hexadecimal(32 bytes) ID identifying the client. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.data* | The compiled code of a contract OR the hash of the invoked method signature and encoded parameters. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.databaseName* | The local database name. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterId* | The filter id to use. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.gasPrice* | Gas price used for each paid gas. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.hashrate* | A hexadecimal string representation (32 bytes) of the hash rate. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerPowHash* | The header's pow-hash (256 bits) used for submitting a proof-of-work solution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.index* | The transactions/uncle index position in the block. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyName* | The key name in the database. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.mixDigest* | The mix digest (256 bits) used for submitting a proof-of-work solution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nonce* | The nonce found (64 bits) used for submitting a proof-of-work solution. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.operation* | Operation to use. | "transaction" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.position* | The transaction index position withing a block. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.priority* | The priority of a whisper message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sha3HashOfDataToSign* | Message to sign by calculating an Ethereum specific signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signedTransactionData* | The signed transaction data for a new message call transaction or a contract creation for signed transactions. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sourceCode* | The source code to compile. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transactionHash* | The information about a transaction requested by transaction hash. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.ttl* | The time to live in seconds of a whisper message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.value* | The value sent within a transaction. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-web3j-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-web3j-kafka-source-connector.adoc
new file mode 100644
index 0000000..860fcd6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-web3j-kafka-source-connector.adoc
@@ -0,0 +1,46 @@
+// kafka-connector options: START
+[[camel-web3j-kafka-connector-source]]
+= camel-web3j-kafka-connector source configuration
+
+When using camel-web3j-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-web3j-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-web3j source connector supports 20 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.nodeAddress* | Sets the node address used to communicate | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.addresses* | Contract address or a list of addresses. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromAddress* | The address the transaction is send from | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fromBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.fullTransactionObjects* | If true it returns the full transaction objects, if false only the hashes of the transactions. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.gasLimit* | The maximum gas allowed in this block. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.privateFor* | A transaction privateFor nodes with public keys in a Quorum network | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.quorumAPI* | If true, this will support Quorum API. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toAddress* | The address the transaction is directed to. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.toBlock* | The block number, or the string latest for the last mined block or pending, earliest for not yet mined transactions. | "latest" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.topics* | Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.web3j* | The preconfigured Web3j object. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.configuration* | Default configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.web3j.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-webhook-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-webhook-kafka-source-connector.adoc
new file mode 100644
index 0000000..f7e0a1d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-webhook-kafka-source-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-webhook-kafka-connector-source]]
+= camel-webhook-kafka-connector source configuration
+
+When using camel-webhook-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-webhook-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-webhook source connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.endpointUri* | The delegate uri. Must belong to a component that supports webhooks. | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookAutoRegister* | Automatically register the webhook at startup and unregister it on shutdown. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookBasePath* | The first (base) path element where the webhook will be exposed. It's a good practice to set it to a random string, so that it cannot be guessed by unauthorized parties. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookComponentName* | The Camel Rest component to use for the REST transport, such as netty-http. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookExternalUrl* | The URL of the current service as seen by the webhook provider | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.webhookPath* | The path where the webhook endpoint will be exposed (relative to basePath, if any) | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.webhook.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.webhook.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.webhook.configuration* | Set the default configuration for the webhook meta-component. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-websocket-jsr356-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-websocket-jsr356-kafka-sink-connector.adoc
new file mode 100644
index 0000000..05b3c2b
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-websocket-jsr356-kafka-sink-connector.adoc
@@ -0,0 +1,34 @@
+// kafka-connector options: START
+[[camel-websocket-jsr356-kafka-connector-sink]]
+= camel-websocket-jsr356-kafka-connector sink configuration
+
+When using camel-websocket-jsr356-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-jsr356-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket-jsr356 sink connector supports 8 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.uri* | If a schemeless URI path is provided, a ServerEndpoint is deployed under that path. Else if the URI is prefixed with the 'ws://' scheme, then a connection is established to the corresponding server | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sessionCount* | Used when the endpoint is in client mode to populate a pool of sessions | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.serverEndpoint DeploymentStrategy* | To enable customization of how a WebSocket ServerEndpoint is configured and deployed. By default DefaultServerEndpointDeploymentStrategy is used. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-websocket-jsr356-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-websocket-jsr356-kafka-source-connector.adoc
new file mode 100644
index 0000000..fbbbbd6
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-websocket-jsr356-kafka-source-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-websocket-jsr356-kafka-connector-source]]
+= camel-websocket-jsr356-kafka-connector source configuration
+
+When using camel-websocket-jsr356-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-jsr356-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket-jsr356 source connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.uri* | If a schemeless URI path is provided, a ServerEndpoint is deployed under that path. Else if the URI is prefixed with the 'ws://' scheme, then a connection is established to the corresponding server | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionCount* | Used when the endpoint is in client mode to populate a pool of sessions | 1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket-jsr356.serverEndpoint DeploymentStrategy* | To enable customization of how a WebSocket ServerEndpoint is configured and deployed. By default DefaultServerEndpointDeploymentStrategy is used. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-websocket-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-websocket-kafka-sink-connector.adoc
new file mode 100644
index 0000000..eead442
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-websocket-kafka-sink-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-websocket-kafka-connector-sink]]
+= camel-websocket-kafka-connector sink configuration
+
+When using camel-websocket-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket sink connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | The hostname. The default value is 0.0.0.0. Setting this option on the component will use the component configured value as default. | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.port* | The port number. The default value is 9292. Setting this option on the component will use the component configured value as default. | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.sink.path.resourceUri* | Name of the websocket channel to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.maxBinaryMessageSize* | Can be used to set the size in bytes that the websocket created by the websocketServlet may be accept before closing. (Default is -1 - or unlimited) | "-1" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendTimeout* | Timeout in millis when sending to a websocket channel. The default timeout is 30000 (30 seconds). | "30000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sendToAll* | To send to all websocket subscribers. Can be used to configure on endpoint level, instead of having to use the WebsocketConstants.SEND_TO_ALL header on the message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.bufferSize* | Set the buffer size of the websocketServlet, which is also the max frame byte size (default 8192) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxIdleTime* | Set the time in ms that the websocket created by the websocketServlet may be idle before closing. (default is 300000) | "300000" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.maxTextMessageSize* | Can be used to set the size in characters that the websocket created by the websocketServlet may be accept before closing. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.minVersion* | Can be used to set the minimum protocol version accepted for the websocketServlet. (Default 13 - the RFC6455 version) | "13" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.allowedOrigins* | The CORS allowed origins. Use to allow all. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.crossOriginFilterOn* | Whether to enable CORS | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.filterPath* | Context path for filtering CORS | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.host* | The hostname. The default value is 0.0.0.0 | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.port* | The port number. The default value is 9292 | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.socketFactory* | To configure a map which contains custom WebSocketFactory for sub protocols. The key in the map is the sub protocol. The default key is reserved for the default implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.maxThreads* | To set a value for maximum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for maxThreads is 1 2 noCores. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.minThreads* | To set a value for minimum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for minThreads is 1. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.threadPool* | To use a custom thread pool for the server. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-websocket-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-websocket-kafka-source-connector.adoc
new file mode 100644
index 0000000..6a6a505
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-websocket-kafka-source-connector.adoc
@@ -0,0 +1,61 @@
+// kafka-connector options: START
+[[camel-websocket-kafka-connector-source]]
+= camel-websocket-kafka-connector source configuration
+
+When using camel-websocket-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-websocket-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-websocket source connector supports 35 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | The hostname. The default value is 0.0.0.0. Setting this option on the component will use the component configured value as default. | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.port* | The port number. The default value is 9292. Setting this option on the component will use the component configured value as default. | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.source.path.resourceUri* | Name of the websocket channel to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.maxBinaryMessageSize* | Can be used to set the size in bytes that the websocket created by the websocketServlet may be accept before closing. (Default is -1 - or unlimited) | "-1" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sessionSupport* | Whether to enable session support which enables HttpSession for each http request. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.staticResources* | Set a resource path for static resources (such as .html files etc). The resources can be loaded from classpath, if you prefix with classpath:, otherwise the resources is loaded from file system or from JAR files. For example to load from root classpath use classpath:., or classpath:WEB-INF/static If not configured (eg null) then no static resource is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bufferSize* | Set the buffer size of the websocketServlet, which is also the max frame byte size (default 8192) | "8192" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxIdleTime* | Set the time in ms that the websocket created by the websocketServlet may be idle before closing. (default is 300000) | "300000" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.maxTextMessageSize* | Can be used to set the size in characters that the websocket created by the websocketServlet may be accept before closing. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.minVersion* | Can be used to set the minimum protocol version accepted for the websocketServlet. (Default 13 - the RFC6455 version) | "13" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.allowedOrigins* | The CORS allowed origins. Use to allow all. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.crossOriginFilterOn* | Whether to enable CORS | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.filterPath* | Context path for filtering CORS | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.host* | The hostname. The default value is 0.0.0.0 | "0.0.0.0" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.port* | The port number. The default value is 9292 | "9292" | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.socketFactory* | To configure a map which contains custom WebSocketFactory for sub protocols. The key in the map is the sub protocol. The default key is reserved for the default implementation. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.staticResources* | Set a resource path for static resources (such as .html files etc). The resources can be loaded from classpath, if you prefix with classpath:, otherwise the resources is loaded from file system or from JAR files. For example to load from root classpath use classpath:., or classpath:WEB-INF/static If not configured (eg null) then no static resource is in use. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.enableJmx* | If this option is true, Jetty JMX support will be enabled for this endpoint. See Jetty JMX support for more details. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.maxThreads* | To set a value for maximum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for maxThreads is 1 2 noCores. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.minThreads* | To set a value for minimum number of threads in server thread pool. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. The default values for minThreads is 1. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.threadPool* | To use a custom thread pool for the server. MaxThreads/minThreads or threadPool fields are required due to switch to Jetty9. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslContextParameters* | To configure security using SSLContextParameters | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeyPassword* | The password for the keystore when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslKeystore* | The path to the keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.sslPassword* | The password when using SSL. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.websocket.useGlobalSslContext Parameters* | Enable usage of global SSL context parameters. | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-weka-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-weka-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f9a1a50
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-weka-kafka-sink-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-weka-kafka-connector-sink]]
+= camel-weka-kafka-connector sink configuration
+
+When using camel-weka-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-weka-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-weka sink connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.command* | The command to use. One of: [filter] [model] [read] [write] [push] [pop] [version] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apply* | The filter spec (i.e. Name Options) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.build* | The classifier spec (i.e. Name Options) | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.dsname* | The named dataset to train the classifier with | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.folds* | Number of folds to use for cross-validation | 10 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.loadFrom* | Path to load the model from | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saveTo* | Path to save the model to | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.seed* | An optional seed for the randomizer | 1 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xval* | Flag on whether to use cross-validation with the current dataset | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.path* | An in/out path for the read/write commands | null | ConfigDef.Importance.MEDIUM
+| *camel.component.weka.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.weka.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-wordpress-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-wordpress-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f040d79
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-wordpress-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-wordpress-kafka-connector-sink]]
+= camel-wordpress-kafka-connector sink configuration
+
+When using camel-wordpress-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-wordpress-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-wordpress sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.operation* | The endpoint operation. One of: [post] [user] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.operationDetail* | The second part of an endpoint operation. Needed only when endpoint semantic is not enough, like wordpress:post:delete One of: [delete] | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.apiVersion* | The Wordpress REST API version | "2" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.criteria* | The criteria to use with complex searches. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.force* | Whether to bypass trash and force deletion. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.id* | The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password from authorized user | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.searchCriteria* | Search criteria | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.url* | The Wordpress API URL from your site, e.g. \http://myblog.com/wp-json/ | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.user* | Authorized user to perform writing operations | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.configuration* | Wordpress component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-wordpress-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-wordpress-kafka-source-connector.adoc
new file mode 100644
index 0000000..6929fd4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-wordpress-kafka-source-connector.adoc
@@ -0,0 +1,44 @@
+// kafka-connector options: START
+[[camel-wordpress-kafka-connector-source]]
+= camel-wordpress-kafka-connector source configuration
+
+When using camel-wordpress-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-wordpress-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-wordpress source connector supports 18 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.operation* | The endpoint operation. One of: [post] [user] | null | ConfigDef.Importance.HIGH
+| *camel.source.path.operationDetail* | The second part of an endpoint operation. Needed only when endpoint semantic is not enough, like wordpress:post:delete One of: [delete] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.apiVersion* | The Wordpress REST API version | "2" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.criteria* | The criteria to use with complex searches. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.force* | Whether to bypass trash and force deletion. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.id* | The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password from authorized user | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.searchCriteria* | Search criteria | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.url* | The Wordpress API URL from your site, e.g. \http://myblog.com/wp-json/ | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.user* | Authorized user to perform writing operations | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.wordpress.configuration* | Wordpress component configuration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-workday-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-workday-kafka-sink-connector.adoc
new file mode 100644
index 0000000..477f1f2
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-workday-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-workday-kafka-connector-sink]]
+= camel-workday-kafka-connector sink configuration
+
+When using camel-workday-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-workday-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-workday sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.entity* | The entity to be requested or subscribed via API. One of: [report] | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.path* | The API path to access an entity structure. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.httpConnectionManager* | Pool connection manager for advanced configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.reportFormat* | Workday Report as a service output format. One of: [json] | "json" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.host* | Workday Host name. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientId* | Workday client Id generated by API client for integrations. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.clientSecret* | Workday client Secret generated by API client for integrations. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.tokenRefresh* | Workday token Refresh generated for integrations system user. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.tenant* | Workday Tenant name. | null | ConfigDef.Importance.HIGH
+| *camel.component.workday.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.workday.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xchange-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xchange-kafka-sink-connector.adoc
new file mode 100644
index 0000000..61daaba
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xchange-kafka-sink-connector.adoc
@@ -0,0 +1,36 @@
+// kafka-connector options: START
+[[camel-xchange-kafka-connector-sink]]
+= camel-xchange-kafka-connector sink configuration
+
+When using camel-xchange-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xchange-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xchange sink connector supports 10 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The exchange to connect to | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.currency* | The currency | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.currencyPair* | The currency pair | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.method* | The method to execute One of: [balances] [fundingHistory] [wallets] [currencies] [currencyMetaData] [currencyPairs] [currencyPairMetaData] [ticker] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.service* | The service to call One of: [marketdata] [metadata] [account] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xchange.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xchange.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xj-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xj-kafka-sink-connector.adoc
new file mode 100644
index 0000000..0965b95
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xj-kafka-sink-connector.adoc
@@ -0,0 +1,56 @@
+// kafka-connector options: START
+[[camel-xj-kafka-connector-sink]]
+= camel-xj-kafka-connector sink configuration
+
+When using camel-xj-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xj-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xj sink connector supports 30 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the template. The following is supported by the default URIResolver. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowStAX* | Whether to allow using StAX as the javax.xml.transform.Source. You can enable this if the XSLT library supports StAX such as the Saxon library (camel-saxon). The Xalan library (default in JVM) does not support StAXSource. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteOutputFile* | If you have output=file then this option dictates whether or not the output file should be deleted when the Exchange is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether or not to throw an exception if the input body is null. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Option to specify which output type to use. Possible values are: string, bytes, DOM, file. The first three options are all in memory based, where as file is streamed directly to a java.io.File. For file you must specify the filename in the IN header with the key Exchange.XSLT_FILE_NAME which is also CamelXsltFileName. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime. One of: [string] [bytes] [DOM] [file] | "string" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformDirection* | Transform direction. Either XML2JSON or JSON2XML One of: [XML2JSON] [JSON2XML] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.transformerCacheSize* | The number of javax.xml.transform.Transformer object that are cached for reuse to avoid calls to Template.newTransformer(). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityResolver* | To use a custom org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorListener* | Allows to configure to use a custom javax.xml.transform.ErrorListener. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHandlerFactory* | Allows you to use a custom org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using custom org.apache.camel.builder.xml.ResultHandler types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory* | To use a custom XSLT transformer factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | To use a custom javax.xml.transform.URIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.saxonConfigurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.transformerFactoryConfiguration Strategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.uriResolver* | To use a custom UriResolver. Should not be used together with the option 'uriResolverFactory'. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xj.uriResolverFactory* | To use a custom UriResolver which depends on a dynamic endpoint resource URI. Should not be used together with the option 'uriResolver'. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xmlsecurity-sign-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xmlsecurity-sign-kafka-sink-connector.adoc
new file mode 100644
index 0000000..e0577f4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xmlsecurity-sign-kafka-sink-connector.adoc
@@ -0,0 +1,59 @@
+// kafka-connector options: START
+[[camel-xmlsecurity-sign-kafka-connector-sink]]
+= camel-xmlsecurity-sign-kafka-connector sink configuration
+
+When using camel-xmlsecurity-sign-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmlsecurity-sign-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmlsecurity-sign sink connector supports 33 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The name part in the URI can be chosen by the user to distinguish between different signer endpoints within the camel context. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.addKeyInfoReference* | In order to protect the KeyInfo element from tampering you can add a reference to the signed info element so that it is protected via the signature value. The default value is true. Only relevant when a KeyInfo is returned by KeyAccessor. and KeyInfo#getId() is not null. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.baseUri* | You can set a base URI which is used in the URI dereferencing. Relative URIs are then concatenated with the base URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.canonicalizationMethod* | Canonicalization method used to canonicalize the SignedInfo element before the digest is calculated. You can use the helper methods XmlSignatureHelper.getCanonicalizationMethod(String algorithm) or getCanonicalizationMethod(String algorithm, List inclusiveNamespacePrefixes) to create a canonicalization method. | "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearHeaders* | Determines if the XML signature specific headers be cleared after signing and verification. Defaults to true. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentObjectId* | Sets the content object Id attribute value. By default a UUID is generated. If you set the null value, then a new UUID will be generated. Only used in the enveloping case. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentReferenceType* | Type of the content reference. The default value is null. This value can be overwritten by the header XmlSignatureConstants#HEADER_CONTENT_REFERENCE_TYPE. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentReferenceUri* | Reference URI for the content to be signed. Only used in the enveloped case. If the reference URI contains an ID attribute value, then the resource schema URI ( setSchemaResourceUri(String)) must also be set because the schema validator will then find out which attributes are ID attributes. Will be ignored in the enveloping or detached case. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cryptoContextProperties* | Sets the crypto context properties. See {link XMLCryptoContext#setProperty(String, Object)}. Possible properties are defined in XMLSignContext an XMLValidateContext (see Supported Properties). The following properties are set by default to the value Boolean#TRUE for the XML validation. If you want to switch these features off you must set the property value to Boolean#FALSE. org.jcp.xml.dsig.validateManifests javax.xml.crypto.dsig.cacheReference | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.digestAlgorithm* | Digest algorithm URI. Optional parameter. This digest algorithm is used for calculating the digest of the input message. If this digest algorithm is not specified then the digest algorithm is calculated from the signature algorithm. Example: \http://www.w3.org/2001/04/xmlenc#sha256 | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disallowDoctypeDecl* | Disallows that the incoming XML document contains DTD DOCTYPE declaration. The default value is Boolean#TRUE. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keyAccessor* | For the signing process, a private key is necessary. You specify a key accessor bean which provides this private key. The key accessor bean must implement the KeyAccessor interface. The package org.apache.camel.component.xmlsecurity.api contains the default implementation class DefaultKeyAccessor which reads the private key from a Java keystore. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.omitXmlDeclaration* | Indicator whether the XML declaration in the outgoing message body should be omitted. Default value is false. Can be overwritten by the header XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputXmlEncoding* | The character encoding of the resulting signed XML document. If null then the encoding of the original XML document is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parentLocalName* | Local name of the parent element to which the XML signature element will be added. Only relevant for enveloped XML signature. Alternatively you can also use setParentXpath(XPathFilterParameterSpec). Default value is null. The value must be null for enveloping and detached XML signature. This parameter or the parameter setParentXpath(XPathFilterParameterSpec) for enveloped signature and the parameter setXpathsToIdAttributes(List) for detached signature must not be set in the same configuration. If the parameters parentXpath and parentLocalName are specified in the same configuration then an exception is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parentNamespace* | Namespace of the parent element to which the XML signature element will be added. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parentXpath* | Sets the XPath to find the parent node in the enveloped case. Either you specify the parent node via this method or the local name and namespace of the parent with the methods setParentLocalName(String) and setParentNamespace(String). Default value is null. The value must be null for enveloping and detached XML signature. If the parameters parentXpath and parentLocalName are specified in the same configuration then an exception is thrown. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.plainText* | Indicator whether the message body contains plain text. The default value is false, indicating that the message body contains XML. The value can be overwritten by the header XmlSignatureConstants#HEADER_MESSAGE_IS_PLAIN_TEXT. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.plainTextEncoding* | Encoding of the plain text. Only relevant if the message body is plain text (see parameter plainText. Default value is UTF-8. | "UTF-8" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.prefixForXmlSignatureNamespace* | Namespace prefix for the XML signature namespace \http://www.w3.org/2000/09/xmldsig#. Default value is ds. If null or an empty value is set then no prefix is used for the XML signature namespace. See best practice \http://www.w3.org/TR/xmldsig-bestpractices/#signing-xml- without-namespaces | "ds" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.properties* | For adding additional References and Objects to the XML signature which contain additional properties, you can provide a bean which implements the XmlSignatureProperties interface. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaResourceUri* | Classpath to the XML Schema. Must be specified in the detached XML Signature case for determining the ID attributes, might be set in the enveloped and enveloping case. If set, then the XML document is validated with the specified XML schema. The schema resource URI can be overwritten by the header XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signatureAlgorithm* | Signature algorithm. Default value is \http://www.w3.org/2000/09/xmldsig#rsa-sha1. | "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.signatureId* | Sets the signature Id. If this parameter is not set (null value) then a unique ID is generated for the signature ID (default). If this parameter is set to (empty string) then no Id attribute is created in the signature element. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformMethods* | Transforms which are executed on the message body before the digest is calculated. By default, C14n is added and in the case of enveloped signature (see option parentLocalName) also \http://www.w3.org/2000/09/xmldsig#enveloped-signature is added at position 0 of the list. Use methods in XmlSignatureHelper to create the transform methods. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xpathsToIdAttributes* | Define the elements which are signed in the detached case via XPATH expressions to ID attributes (attributes of type ID). For each element found via the XPATH expression a detached signature is created whose reference URI contains the corresponding attribute value (preceded by '#'). The signature becomes the last sibling of the signed element. Elements with deeper hierarchy level are signed first. You can also set the XPATH list dynamically via the header XmlSignatureConstants#HEADER_XPATHS_TO_ID_ATTRIBUTES. The parameter setParentLocalName(String) or setParentXpath(XPathFilterParameterSpec) for enveloped signature and this parameter for detached signature must not be set in the same configuration. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriDereferencer* | If you want to restrict the remote access via reference URIs, you can set an own dereferencer. Optional parameter. If not set the provider default dereferencer is used which can resolve URI fragments, HTTP, file and XPpointer URIs. Attention: The implementation is provider dependent! | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-sign.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-sign.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-sign.signer Configuration* | To use a shared XmlSignerConfiguration configuration to use as base for configuring endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xmlsecurity-verify-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xmlsecurity-verify-kafka-sink-connector.adoc
new file mode 100644
index 0000000..fb88f67
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xmlsecurity-verify-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-xmlsecurity-verify-kafka-connector-sink]]
+= camel-xmlsecurity-verify-kafka-connector sink configuration
+
+When using camel-xmlsecurity-verify-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmlsecurity-verify-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmlsecurity-verify sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.name* | The name part in the URI can be chosen by the user to distinguish between different verify endpoints within the camel context. | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.baseUri* | You can set a base URI which is used in the URI dereferencing. Relative URIs are then concatenated with the base URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.clearHeaders* | Determines if the XML signature specific headers be cleared after signing and verification. Defaults to true. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.cryptoContextProperties* | Sets the crypto context properties. See {link XMLCryptoContext#setProperty(String, Object)}. Possible properties are defined in XMLSignContext an XMLValidateContext (see Supported Properties). The following properties are set by default to the value Boolean#TRUE for the XML validation. If you want to switch these features off you must set the property value to Boolean#FALSE. org.jcp.xml.dsig.validateManifests javax.xml.crypto.dsig.cacheReference | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.disallowDoctypeDecl* | Disallows that the incoming XML document contains DTD DOCTYPE declaration. The default value is Boolean#TRUE. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.keySelector* | Provides the key for validating the XML signature. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.omitXmlDeclaration* | Indicator whether the XML declaration in the outgoing message body should be omitted. Default value is false. Can be overwritten by the header XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION. | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputNodeSearch* | Sets the output node search value for determining the node from the XML signature document which shall be set to the output message body. The class of the value depends on the type of the output node search. The output node search is forwarded to XmlSignature2Message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputNodeSearchType* | Determines the search type for determining the output node which is serialized into the output message bodyF. See setOutputNodeSearch(Object). The supported default search types you can find in DefaultXmlSignature2Message. | "Default" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.outputXmlEncoding* | The character encoding of the resulting signed XML document. If null then the encoding of the original XML document is used. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.removeSignatureElements* | Indicator whether the XML signature elements (elements with local name Signature and namesapce \http://www.w3.org/2000/09/xmldsig#) shall be removed from the document set to the output message. Normally, this is only necessary, if the XML signature is enveloped. The default value is Boolean#FALSE. This parameter is forwarded to XmlSignature2Message. This indicator has no effect if the output node search is of type DefaultXmlSignature2Message#OUTPUT_NODE_SEARCH_TYPE_DEFAULT.F | "false" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.schemaResourceUri* | Classpath to the XML Schema. Must be specified in the detached XML Signature case for determining the ID attributes, might be set in the enveloped and enveloping case. If set, then the XML document is validated with the specified XML schema. The schema resource URI can be overwritten by the header XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.secureValidation* | Enables secure validation. If true then secure validation is enabled. | "true" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.validationFailedHandler* | Handles the different validation failed situations. The default implementation throws specific exceptions for the different situations (All exceptions have the package name org.apache.camel.component.xmlsecurity.api and are a sub-class of XmlSignatureInvalidException. If the signature value validation fails, a XmlSignatureInvalidValueException is thrown. If a reference validation fails, a XmlSignatureInvalidContentHashException is thrown. For more detailed information, see the JavaDoc. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xmlSignature2Message* | Bean which maps the XML signature to the output-message after the validation. How this mapping should be done can be configured by the options outputNodeSearchType, outputNodeSearch, and removeSignatureElements. The default implementation offers three possibilities which are related to the three output node search types Default, ElementName, and XPath. The default implementation determines a node which is then serialized and set to the body of the output message If the search type is ElementName then the output node (which must be in this case an element) is determined by the local name and namespace defined in the search value (see option outputNodeSearch). If the search type is XPath then the output node is determined by the XPath specified in the search value (in this case the output node can be of type Element, TextNode or Document). If the output node search type is Default then the following rules apply: In the enveloped XML signature case (there is a reference with URI= and transform \http://www.w3.org/2000/09/xmldsig#enveloped-signature), the incoming XML document without the Signature element is set to the output message body. In the non-enveloped XML signature case, the message body is determined from a referenced Object; this is explained in more detail in chapter Output Node Determination in Enveloping XML Signature Case. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.xmlSignatureChecker* | This interface allows the application to check the XML signature before the validation is executed. This step is recommended in \http://www.w3.org/TR/xmldsig-bestpractices/#check-what-is-signed | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriDereferencer* | If you want to restrict the remote access via reference URIs, you can set an own dereferencer. Optional parameter. If not set the provider default dereferencer is used which can resolve URI fragments, HTTP, file and XPpointer URIs. Attention: The implementation is provider dependent! | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-verify.lazyStart Producer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-verify.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmlsecurity-verify.verifier Configuration* | To use a shared XmlVerifierConfiguration configuration to use as base for configuring endpoints. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xmpp-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xmpp-kafka-sink-connector.adoc
new file mode 100644
index 0000000..f5c85d5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xmpp-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-xmpp-kafka-connector-sink]]
+= camel-xmpp-kafka-connector sink configuration
+
+When using camel-xmpp-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmpp sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.host* | Hostname for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.port* | Port number for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.participant* | JID (Jabber ID) of person to receive messages. room parameter has precedence over participant. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.login* | Whether to login the user. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.nickname* | Use nickname when joining room. If room is specified and nickname is not, user will be used for the nickname. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.pubsub* | Accept pubsub packets on input, default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.room* | If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are supermanjabber.org and want to join the krypton room, then the room URL is kryptonconference.jabber.org. Note the conference part. It is not a requirement to provide the full room JID. If the room parameter does not contain the symbol, the domain part will be discovered and added by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serviceName* | The name of the service you are connecting to. For Google Talk, this would be gmail.com. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a lazy connection when needed by a producer, and will poll for a consumer connection until the connection is established. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createAccount* | If true, an attempt to create an account will be made. Default is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resource* | XMPP resource. The default is Camel. | "Camel" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.connectionConfig* | To use an existing connection configuration. Currently org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration is only supported (XMPP over TCP). | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.roomPassword* | Password for room | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.user* | User name (without server name). If not specified, anonymous login will be attempted. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xmpp-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xmpp-kafka-source-connector.adoc
new file mode 100644
index 0000000..406ab2d
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xmpp-kafka-source-connector.adoc
@@ -0,0 +1,51 @@
+// kafka-connector options: START
+[[camel-xmpp-kafka-connector-source]]
+= camel-xmpp-kafka-connector source configuration
+
+When using camel-xmpp-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xmpp-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xmpp source connector supports 25 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.host* | Hostname for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.port* | Port number for the chat server | null | ConfigDef.Importance.HIGH
+| *camel.source.path.participant* | JID (Jabber ID) of person to receive messages. room parameter has precedence over participant. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.login* | Whether to login the user. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.nickname* | Use nickname when joining room. If room is specified and nickname is not, user will be used for the nickname. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pubsub* | Accept pubsub packets on input, default is false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.room* | If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are supermanjabber.org and want to join the krypton room, then the room URL is kryptonconference.jabber.org. Note the conference part. It is not a requirement to provide the full room JID. If the room parameter does not contain the symbol, the domain part will be discovered and added by Camel | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serviceName* | The name of the service you are connecting to. For Google Talk, this would be gmail.com. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.testConnectionOnStartup* | Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a lazy connection when needed by a producer, and will poll for a consumer connection until the connection is established. Default is true. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.createAccount* | If true, an attempt to create an account will be made. Default is false. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resource* | XMPP resource. The default is Camel. | "Camel" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionPollDelay* | The amount of time in seconds between polls (in seconds) to verify the health of the XMPP connection, or between attempts to establish an initial consumer connection. Camel will try to re-establish a connection if it has become inactive. Default is 10 seconds. | 10 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.doc* | Set a doc header on the IN message containing a Document form of the incoming packet; default is true if presence or pubsub are true, otherwise false | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.connectionConfig* | To use an existing connection configuration. Currently org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration is only supported (XMPP over TCP). | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerFilterStrategy* | To use a custom HeaderFilterStrategy to filter header to and from Camel message. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | Password for login | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.roomPassword* | Password for room | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.user* | User name (without server name). If not specified, anonymous login will be attempted. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xmpp.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xquery-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xquery-kafka-sink-connector.adoc
new file mode 100644
index 0000000..b419e88
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xquery-kafka-sink-connector.adoc
@@ -0,0 +1,47 @@
+// kafka-connector options: START
+[[camel-xquery-kafka-connector-sink]]
+= camel-xquery-kafka-connector sink configuration
+
+When using camel-xquery-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xquery-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xquery sink connector supports 21 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | The name of the template to load from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowStAX* | Whether to allow using StAX mode | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.headerName* | To use a Camel Message header as the input source instead of Message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.namespacePrefixes* | Allows to control which namespace prefixes to use for a set of namespace mappings | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultsFormat* | What output result to use One of: [Bytes] [BytesSource] [DOM] [DOMSource] [List] [String] [StringSource] | "DOM" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultType* | What output result to use defined as a class | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.stripsAllWhiteSpace* | Whether to strip all whitespaces | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.parameters* | Additional parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.properties* | Properties to configure the serialization parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.staticQueryContext* | To use a custom Saxon StaticQueryContext | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xquery-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xquery-kafka-source-connector.adoc
new file mode 100644
index 0000000..3b93782
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xquery-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-xquery-kafka-connector-source]]
+= camel-xquery-kafka-connector source configuration
+
+When using camel-xquery-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xquery-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xquery source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.resourceUri* | The name of the template to load from classpath or file system | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.allowStAX* | Whether to allow using StAX mode | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.headerName* | To use a Camel Message header as the input source instead of Message body. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.namespacePrefixes* | Allows to control which namespace prefixes to use for a set of namespace mappings | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultsFormat* | What output result to use One of: [Bytes] [BytesSource] [DOM] [DOMSource] [List] [String] [StringSource] | "DOM" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.resultType* | What output result to use defined as a class | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.stripsAllWhiteSpace* | Whether to strip all whitespaces | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.parameters* | Additional parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.properties* | Properties to configure the serialization parameters | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.staticQueryContext* | To use a custom Saxon StaticQueryContext | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configuration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.configurationProperties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xquery.moduleURIResolver* | To use the custom ModuleURIResolver | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xslt-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xslt-kafka-sink-connector.adoc
new file mode 100644
index 0000000..190d200
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xslt-kafka-sink-connector.adoc
@@ -0,0 +1,49 @@
+// kafka-connector options: START
+[[camel-xslt-kafka-connector-sink]]
+= camel-xslt-kafka-connector sink configuration
+
+When using camel-xslt-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xslt-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xslt sink connector supports 23 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the template. The following is supported by the default URIResolver. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteOutputFile* | If you have output=file then this option dictates whether or not the output file should be deleted when the Exchange is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether or not to throw an exception if the input body is null. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Option to specify which output type to use. Possible values are: string, bytes, DOM, file. The first three options are all in memory based, where as file is streamed directly to a java.io.File. For file you must specify the filename in the IN header with the key Exchange.XSLT_FILE_NAME which is also CamelXsltFileName. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime. One of: [string] [bytes] [DOM] [file] | "string" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerCacheSize* | The number of javax.xml.transform.Transformer object that are cached for reuse to avoid calls to Template.newTransformer(). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityResolver* | To use a custom org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorListener* | Allows to configure to use a custom javax.xml.transform.ErrorListener. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHandlerFactory* | Allows you to use a custom org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using custom org.apache.camel.builder.xml.ResultHandler types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory* | To use a custom XSLT transformer factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | To use a custom javax.xml.transform.URIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.uriResolver* | To use a custom UriResolver. Should not be used together with the option 'uriResolverFactory'. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt.uriResolverFactory* | To use a custom UriResolver which depends on a dynamic endpoint resource URI. Should not be used together with the option 'uriResolver'. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-xslt-saxon-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-xslt-saxon-kafka-sink-connector.adoc
new file mode 100644
index 0000000..320f764
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-xslt-saxon-kafka-sink-connector.adoc
@@ -0,0 +1,55 @@
+// kafka-connector options: START
+[[camel-xslt-saxon-kafka-connector-sink]]
+= camel-xslt-saxon-kafka-connector sink configuration
+
+When using camel-xslt-saxon-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-xslt-saxon-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-xslt-saxon sink connector supports 29 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.resourceUri* | Path to the template. The following is supported by the default URIResolver. You can prefix with: classpath, file, http, ref, or bean. classpath, file and http loads the resource using these protocols (classpath is default). ref will lookup the resource in the registry. bean will call a method on a bean to be used as the resource. For bean you can specify the method name after dot, eg bean:myBean.myMethod | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.allowStAX* | Whether to allow using StAX as the javax.xml.transform.Source. You can enable this if the XSLT library supports StAX such as the Saxon library (camel-saxon). The Xalan library (default in JVM) does not support StAXSource. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.deleteOutputFile* | If you have output=file then this option dictates whether or not the output file should be deleted when the Exchange is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.failOnNullBody* | Whether or not to throw an exception if the input body is null. | true | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.output* | Option to specify which output type to use. Possible values are: string, bytes, DOM, file. The first three options are all in memory based, where as file is streamed directly to a java.io.File. For file you must specify the filename in the IN header with the key Exchange.XSLT_FILE_NAME which is also CamelXsltFileName. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime. One of: [string] [bytes] [DOM] [file] | "string" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerCacheSize* | The number of javax.xml.transform.Transformer object that are cached for reuse to avoid calls to Template.newTransformer(). | 0 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.entityResolver* | To use a custom org.xml.sax.EntityResolver with javax.xml.transform.sax.SAXSource. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.errorListener* | Allows to configure to use a custom javax.xml.transform.ErrorListener. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.resultHandlerFactory* | Allows you to use a custom org.apache.camel.builder.xml.ResultHandlerFactory which is capable of using custom org.apache.camel.builder.xml.ResultHandler types. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory* | To use a custom XSLT transformer factory | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.uriResolver* | To use a custom javax.xml.transform.URIResolver | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.contentCache* | Cache for the resource content (the stylesheet file) when it is loaded. If set to false Camel will reload the stylesheet file on each message processing. This is good for development. A cached stylesheet can be forced to reload at runtime via JMX using the clearCachedStylesheet operation. | true | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.saxonConfiguration* | To use a custom Saxon configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.saxonConfiguration Properties* | To set custom Saxon configuration properties | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.saxonExtensionFunctions* | Allows you to use a custom net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon to the classpath. The function is looked up in the registry, where you can comma to separate multiple values to lookup. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.transformerFactoryClass* | To use a custom XSLT transformer factory, specified as a FQN class name | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.transformerFactory ConfigurationStrategy* | A configuration strategy to apply on freshly created instances of TransformerFactory. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.uriResolver* | To use a custom UriResolver. Should not be used together with the option 'uriResolverFactory'. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.xslt-saxon.uriResolverFactory* | To use a custom UriResolver which depends on a dynamic endpoint resource URI. Should not be used together with the option 'uriResolver'. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-yammer-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-yammer-kafka-sink-connector.adoc
new file mode 100644
index 0000000..7ac6db4
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-yammer-kafka-sink-connector.adoc
@@ -0,0 +1,42 @@
+// kafka-connector options: START
+[[camel-yammer-kafka-connector-sink]]
+= camel-yammer-kafka-connector sink configuration
+
+When using camel-yammer-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-yammer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-yammer sink connector supports 16 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.function* | The function to use One of: [MESSAGES] [MY_FEED] [ALGO] [FOLLOWING] [SENT] [PRIVATE] [RECEIVED] [USERS] [CURRENT] | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.useJson* | Set to true if you want to use raw JSON rather than converting to POJOs. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.accessToken* | The access token | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.consumerKey* | The consumer key | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.consumerSecret* | The consumer secret | null | ConfigDef.Importance.HIGH
+| *camel.component.yammer.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.config* | To use a shared yammer configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-yammer-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-yammer-kafka-source-connector.adoc
new file mode 100644
index 0000000..80e7a04
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-yammer-kafka-source-connector.adoc
@@ -0,0 +1,65 @@
+// kafka-connector options: START
+[[camel-yammer-kafka-connector-source]]
+= camel-yammer-kafka-connector source configuration
+
+When using camel-yammer-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-yammer-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-yammer source connector supports 39 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.function* | The function to use One of: [MESSAGES] [MY_FEED] [ALGO] [FOLLOWING] [SENT] [PRIVATE] [RECEIVED] [USERS] [CURRENT] | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.useJson* | Set to true if you want to use raw JSON rather than converting to POJOs. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Delay between polling in millis | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.limit* | Return only the specified number of messages. Works for threaded=true and threaded=extended. | -1 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.newerThan* | Returns messages newer than the message ID specified as a numeric string. This should be used when polling for new messages. If you're looking at messages, and the most recent message returned is 3516, you can make a request with the parameter newerThan=3516� to ensure that you do not get duplicate copies of messages already on your page. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.olderThan* | Returns messages older than the message ID specified as a numeric string. This is useful for paginating messages. For example, if you're currently viewing 20 messages and the oldest is number 2912, you could append olderThan=2912� to your request to get the 20 messages prior to those you're seeing. | -1L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.threaded* | threaded=true will only return the first message in each thread. This parameter is intended for apps which display message threads collapsed. threaded=extended will return the thread starter messages in order of most recently active as well as the two most recent messages, as they are viewed in the default view on the Yammer web interface. One of: [true] [extended] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.userId* | The user id | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.accessToken* | The access token | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.consumerKey* | The consumer key | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.consumerSecret* | The consumer secret | null | ConfigDef.Importance.HIGH
+| *camel.component.yammer.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.config* | To use a shared yammer configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.requestor* | To use a specific requester to communicate with Yammer. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.accessToken* | The access token | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerKey* | The consumer key | null | ConfigDef.Importance.MEDIUM
+| *camel.component.yammer.consumerSecret* | The consumer secret | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-zendesk-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-zendesk-kafka-sink-connector.adoc
new file mode 100644
index 0000000..c9b9ffd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-zendesk-kafka-sink-connector.adoc
@@ -0,0 +1,40 @@
+// kafka-connector options: START
+[[camel-zendesk-kafka-connector-sink]]
+= camel-zendesk-kafka-connector sink configuration
+
+When using camel-zendesk-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zendesk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zendesk sink connector supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.methodName* | What operation to use | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.serverUrl* | The server URL to connect. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.oauthToken* | The OAuth token. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.password* | The password. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.token* | The security token. | null | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.username* | The user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.zendesk* | To use a shared Zendesk instance. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-zendesk-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-zendesk-kafka-source-connector.adoc
new file mode 100644
index 0000000..bedc625
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-zendesk-kafka-source-connector.adoc
@@ -0,0 +1,58 @@
+// kafka-connector options: START
+[[camel-zendesk-kafka-connector-source]]
+= camel-zendesk-kafka-connector source configuration
+
+When using camel-zendesk-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zendesk-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zendesk source connector supports 32 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.methodName* | What operation to use | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.inBody* | Sets the name of a parameter to be passed in the exchange In Body | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.serverUrl* | The server URL to connect. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageWhenIdle* | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.pollStrategy* | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffErrorThreshold* | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffIdleThreshold* | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoffMultiplier* | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.delay* | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.greedy* | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.initialDelay* | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeatCount* | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.runLoggingLevel* | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. One of: [TRACE] [DEBUG] [INFO] [WARN] [ERROR] [OFF] | "TRACE" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduledExecutorService* | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.scheduler* | To use a cron scheduler from either camel-spring or camel-quartz component One of: [none] [spring] [quartz] | "none" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.schedulerProperties* | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.startScheduler* | Whether the scheduler should be auto started. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeUnit* | Time unit for initialDelay and delay options. One of: [NANOSECONDS] [MICROSECONDS] [MILLISECONDS] [SECONDS] [MINUTES] [HOURS] [DAYS] | "MILLISECONDS" | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.useFixedDelay* | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.oauthToken* | The OAuth token. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.password* | The password. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.token* | The security token. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.username* | The user name. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.configuration* | To use the shared configuration | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zendesk.zendesk* | To use a shared Zendesk instance. | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-zookeeper-kafka-sink-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-zookeeper-kafka-sink-connector.adoc
new file mode 100644
index 0000000..cdc04f5
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-zookeeper-kafka-sink-connector.adoc
@@ -0,0 +1,38 @@
+// kafka-connector options: START
+[[camel-zookeeper-kafka-connector-sink]]
+= camel-zookeeper-kafka-connector sink configuration
+
+When using camel-zookeeper-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zookeeper-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zookeeper sink connector supports 12 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.sink.path.serverUrls* | The zookeeper server hosts (multiple servers can be separated by comma) | null | ConfigDef.Importance.HIGH
+| *camel.sink.path.path* | The node in the ZooKeeper server (aka znode) | null | ConfigDef.Importance.HIGH
+| *camel.sink.endpoint.listChildren* | Whether the children of the node should be listed | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.timeout* | The time interval to wait on connection before timing out. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.create* | Should the endpoint create the node if it does not currently exist. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.createMode* | The create mode that should be used for the newly created node One of: [PERSISTENT] [PERSISTENT_SEQUENTIAL] [EPHEMERAL] [EPHEMERAL_SEQUENTIAL] | "EPHEMERAL" | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.sink.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.lazyStartProducer* | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.configuration* | To use a shared ZooKeeperConfiguration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-zookeeper-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-zookeeper-kafka-source-connector.adoc
new file mode 100644
index 0000000..ea2e0dd
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-zookeeper-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-zookeeper-kafka-connector-source]]
+= camel-zookeeper-kafka-connector source configuration
+
+When using camel-zookeeper-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zookeeper-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zookeeper source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.serverUrls* | The zookeeper server hosts (multiple servers can be separated by comma) | null | ConfigDef.Importance.HIGH
+| *camel.source.path.path* | The node in the ZooKeeper server (aka znode) | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.listChildren* | Whether the children of the node should be listed | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.timeout* | The time interval to wait on connection before timing out. | 5000 | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.backoff* | The time interval to backoff for after an error before retrying. | 5000L | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.repeat* | Should changes to the znode be 'watched' and repeatedly processed. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.sendEmptyMessageOnDelete* | Upon the delete of a znode, should an empty message be send to the consumer | true | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.basicPropertyBinding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper.configuration* | To use a shared ZooKeeperConfiguration | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/connectors/camel-zookeeper-master-kafka-source-connector.adoc b/docs/modules/ROOT/pages/connectors/camel-zookeeper-master-kafka-source-connector.adoc
new file mode 100644
index 0000000..8c7369f
--- /dev/null
+++ b/docs/modules/ROOT/pages/connectors/camel-zookeeper-master-kafka-source-connector.adoc
@@ -0,0 +1,41 @@
+// kafka-connector options: START
+[[camel-zookeeper-master-kafka-connector-source]]
+= camel-zookeeper-master-kafka-connector source configuration
+
+When using camel-zookeeper-master-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.kafkaconnector</groupId>
+  <artifactId>camel-zookeeper-master-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+
+The camel-zookeeper-master source connector supports 15 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+| *camel.source.path.groupName* | The name of the cluster group to use | null | ConfigDef.Importance.HIGH
+| *camel.source.path.consumerEndpointUri* | The consumer endpoint to use in master/slave mode | null | ConfigDef.Importance.HIGH
+| *camel.source.endpoint.bridgeErrorHandler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exceptionHandler* | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.exchangePattern* | Sets the exchange pattern when the consumer creates an exchange. One of: [InOnly] [InOut] [InOptionalOut] | null | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.basicPropertyBinding* | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.source.endpoint.synchronous* | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.bridgeError Handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.containerId Factory* | To use a custom ContainerIdFactory for creating container ids. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.maximumConnection Timeout* | Timeout in millis to use when connecting to the zookeeper ensemble | 10000 | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.zkRoot* | The root path to use in zookeeper where information is stored which nodes are master/slave etc. Will by default use: /camel/zookeepermaster/clusters/master | "/camel/zookeepermaster/clusters/master" | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.zooKeeperUrl* | The url for the zookeeper ensemble | "localhost:2181" | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.basicProperty Binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.curator* | To use a custom configured CuratorFramework as connection to zookeeper ensemble. | null | ConfigDef.Importance.MEDIUM
+| *camel.component.zookeeper-master.zooKeeperPassword* | The password to use when connecting to the zookeeper ensemble | null | ConfigDef.Importance.MEDIUM
+|===
+// kafka-connector options: END
diff --git a/docs/modules/ROOT/pages/contributing.adoc b/docs/modules/ROOT/pages/contributing.adoc
new file mode 100644
index 0000000..769bc2c
--- /dev/null
+++ b/docs/modules/ROOT/pages/contributing.adoc
@@ -0,0 +1,100 @@
+[[Contributing-Contributing]]
+= Contributing to Camel-Kafka-connector
+
+First of all, thank you for having an interest in contributing to Camel-Kafka-connector.
+
+The Apache Camel community is a great group of contributors and Camel-Kafka-connector is the newer subproject in the ecosystem.
+
+There are multiple areas in which camel-kafka-connector could be improved. Here are some examples:
+
+* Surfing the basic documentation - if something is not clear, let us know or fix it yourself.
+* Try the xref:getting-started.adoc[Getting started] guide
+* Digging in the codebase and tune some operations or add new features.
+* Take a look at the https://github.com/apache/camel-kafka-connector/issues[open issues] and leave a comment on the issue to let us know you are working on it.
+
+[[Contributing-Contents]]
+== Table of Contents
+
+* <<getting-in-touch,Getting in touch>>
+* <<building-the-project,Building the project>>
+
+[#getting-in-touch]
+== Getting in touch
+
+Apache Camel Kafka Connector is an Apache Software Foundation project.
+
+All communication is subject to the https://www.apache.org/foundation/policies/conduct.html[ASF Code of Conduct].
+
+There are various ways of communicating with the Camel community.
+
+We can also be reached on the Gitter chat at https://gitter.im/apache/camel-kafka-connector/.
+
+We track issues using the https://github.com/apache/camel-kafka-connector/issues[issues tracker in Github]
+
+When you're ready to contribute create a Pull request to the https://github.com/apache/camel-kafka-connector/[camel-kafka-connector repository]
+
+Expect that your Pull request will receive a review and that you will need to respond and correspond to that via comments at GitHub.
+
+[#building-the-project]
+== Building the project
+
+Basically you could run
+
+[source,bash]
+----
+mvn clean package
+----
+
+=== Build the project and run integration tests
+
+To build the project it is sufficient to:
+
+[source,bash]
+----
+mvn clean install
+----
+To run the integration tests it is required to:
+
+  * have Docker version 17.05 or higher running
+  * run:
+
+[source,bash]
+----
+mvn -DskipIntegrationTests=false clean verify package
+----
+
+It is also possible to point the tests to use an external services. To do so, you must set
+properties for the services that you want to run. This causes the tests to not launch the local
+container and use existing remote instances. At the moment, the following properties can be set
+for remote testing:
+
+* kafka.instance.type
+** kafka.bootstrap.servers
+* aws-service.instance.type
+** access.key: AWS access key (mandatory for remote testing)
+** secret.key: AWS secret key (mandatory for remote testing)
+** aws.region: AWS region (optional)
+** aws.host: AWS host (optional)
+* aws-service.kinesis.instance.type
+** access.key: AWS access key (mandatory for remote testing)
+** secret.key: AWS secret key (mandatory for remote testing)
+** aws.region: AWS region (optional)
+** aws.host: AWS host (optional)
+* elasticsearch.instance.type
+** elasticsearch.host
+** elasticsearch.port
+* cassandra.instance.type
+** cassandra.host
+** cassandra.cql3.port
+* jms-service.instance.type
+** jms.broker.address
+
+For example you can run
+
+----
+mvn -Dkafka.bootstrap.servers=host1:port -Dkafka.instance.type=remote -DskipIntegrationTests=false clean verify package
+----
+
+It's possible to use a properties file to set these properties. To do so use `-Dtest.properties=/path/to/file.properties`.
+
+
diff --git a/docs/modules/ROOT/pages/getting-started-with-packages.adoc b/docs/modules/ROOT/pages/getting-started-with-packages.adoc
new file mode 100644
index 0000000..81e70a8
--- /dev/null
+++ b/docs/modules/ROOT/pages/getting-started-with-packages.adoc
@@ -0,0 +1,8 @@
+[[GettingStartedwithpackages-GettingStartedwithpackages]]
+= Getting started with packages
+
+The Camel-Kafka-connector connectors can be used also as packages to unpack in your Kafka-connect Plugin path.
+
+If you already set up Zookeeper, Kafka, and Kafka Connect, using camel-kafka-connector's connector is pretty fast: you can download one or more archives (we provide zip and tar.gz formats) and extract their content into the Kafka Connect environment, specifically in Kafka Connect’s plugin path. Doing this will require to specify the plugin path in your worker configuration (e.g. connect-distributed.properties or connect-standalone.properties) using the plugin.path configuration property. 
+
+We're still under heavy development and we'll do a first release soon, for the moment you could obtain the packages through building the project.
diff --git a/docs/modules/ROOT/pages/getting-started.adoc b/docs/modules/ROOT/pages/getting-started.adoc
new file mode 100644
index 0000000..2fed46b
--- /dev/null
+++ b/docs/modules/ROOT/pages/getting-started.adoc
@@ -0,0 +1,10 @@
+[[GettingStarted-GettingStarted]]
+= Getting Started
+
+Camel Kafka Connector allows you to use all Camel xref:components::index.adoc[components] as http://kafka.apache.org/documentation/#connect[Kafka Connect] connectors, which as result expands Kafka Connect compatibility to include all Camel components to be used in Kafka ecosystem.  
+
+To get started try it out xref:try-it-out-locally.adoc[locally] or on xref:try-it-out-on-openshift-with-strimzi.adoc[OpenShift cluster] with https://strimzi.io/[Strimzi].
+
+For more information on how to install the connector packages, take a look at xref:getting-started-with-packages.adoc[Packages documentation].
+
+For more information join the community on the https://camel.apache.org/community/mailing-list/[Camel Users mailing list] or chat on https://gitter.im/apache/camel-kafka-connector[Gitter chat] and have a look at the https://github.com/apache/camel-kafka-connector/[Camel Kafka Connector GitHub repository].
diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc
index 04e6051..09cee1a 100644
--- a/docs/modules/ROOT/pages/index.adoc
+++ b/docs/modules/ROOT/pages/index.adoc
@@ -1,7 +1,10 @@
-= About Apache Camel Kafka Connector
+[[CamelKafkaConnector-index]]
+= Apache Camel Kafka Connector
 
-Camel Kafka Connector allows you to use all Camel xref:components::index.adoc[components] as http://kafka.apache.org/documentation/#connect[Kafka Connect] connectors, which as result expands Kafka Connect compatibility to include all Camel components to be used in Kafka ecosystem.  
-
-To get started try it out xref:try-it-out-locally.adoc[locally] or on xref:try-it-out-on-openshift-with-strimzi.adoc[OpenShift cluster] with https://strimzi.io/[Strimzi].
-
-For more information join the community on the https://camel.apache.org/community/mailing-list/[Camel Users mailing list] or chat on https://gitter.im/apache/camel-kafka-connector[Gitter chat] and have a look at the https://github.com/apache/camel-kafka-connector/[Camel Kafka Connector GitHub repository].
+* xref:about.adoc[What is it?]
+* xref:getting-started.adoc[Getting started]
+** xref:try-it-out-locally.adoc[Try it locally]
+** xref:try-it-out-on-openshift-with-strimzi.adoc[Try it on OpenShift cluster]
+** xref:getting-started-with-packages.adoc[Packages documentation]
+* xref:connectors.adoc[Connectors list]
+* xref:contributing.adoc[Contributing]
diff --git a/docs/modules/ROOT/pages/try-it-out-locally.adoc b/docs/modules/ROOT/pages/try-it-out-locally.adoc
index 2a5b6ba..2daaa82 100644
--- a/docs/modules/ROOT/pages/try-it-out-locally.adoc
+++ b/docs/modules/ROOT/pages/try-it-out-locally.adoc
@@ -1,5 +1,7 @@
+[[Tryitoutlocally-Tryitoutlocally]]
 = Try it out locally
 
+[[Tryitoutlocally-RunKafka]]
 == Run Kafka
 
 First, get a locally running kafka instance by following Apache Kafka https://kafka.apache.org/quickstart[quickstart guide]. This usually boils down to:
@@ -60,6 +62,7 @@
 $KAFKA_HOME/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic
 ----
 
+[[Tryitoutlocally-TryExamples]]
 == Try some examples
 
 For the following examples you need to fetch the `camel-kafka-connector` project and https://github.com/apache/camel-kafka-connector/blob/master/README.adoc#build-the-project[build] it locally by running `./mvnw package` from the root of the project. Look into the `config` and `examples` directories for the configuration files (`*.properties`) of the examples showcased here.
@@ -71,6 +74,7 @@
 export CLASSPATH="$(find core/target/ -type f -name '*.jar'| grep '\-package' | tr '\n' ':')"
 ----
 
+[[Tryitoutlocally-SimpleLogger]]
 === Simple logger (sink)
 
 This is an example of a _sink_ that logs messages consumed from `mytopic`.
@@ -81,6 +85,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties config/CamelSinkConnector.properties 
 ----
 
+[[Tryitoutlocally-Timer]]
 === Timer (source)
 
 This is an example of a _source_ that produces a message every second to `mytopic`.
@@ -91,6 +96,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties config/CamelSourceConnector.properties
 ----
 
+[[Tryitoutlocally-AwsKinesis]]
 === AWS Kinesis (source)
 
 This example consumes from AWS Kinesis data stream and transfers the payload to `mytopic` topic in Kafka.
@@ -103,6 +109,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelAWSKinesisSourceConnector.properties
 ----
 
+[[Tryitoutlocally-AWSSQSSink]]
 === AWS SQS (sink)
 
 This example consumes from Kafka topic `mytopic` and transfers the payload to AWS SQS.
@@ -115,6 +122,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelAWSSQSSinkConnector.properties
 ----
 
+[[Tryitoutlocally-AWSSQSSource]]
 === AWS SQS (source)
 
 This example consumes from AWS SQS queue `mysqs` and transfers the payload to `mytopic` topic in Kafka.
@@ -127,6 +135,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelAWSSQSSourceConnector.properties
 ----
 
+[[Tryitoutlocally-AWSSNSSink]]
 === AWS SNS (sink)
 
 This example consumes from `mytopic` Kafka topic and transfers the payload to AWS SNS `topic` topic.
@@ -139,6 +148,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelAWSSNSSinkConnector.properties
 ----
 
+[[Tryitoutlocally-AWSSNSSource]]
 === AWS S3 (source)
 
 This example fetches objects from AWS S3 in the `camel-kafka-connector` bucket and transfers the payload to `mytopic` Kafka topic. This example shows how to implement a custom converter converting from bytes received from S3 to Kafka's `SchemaAndValue`.
@@ -151,6 +161,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelAWSS3SourceConnector.properties
 ----
 
+[[Tryitoutlocally-CassandraQL]]
 === Apache Cassandra
 
 This examples require a running Cassandra instance, for simplicity the steps below show how to start Cassandra using Docker. First you'll need to run a Cassandra instance:
@@ -198,6 +209,7 @@
 docker inspect --format='{{ .NetworkSettings.IPAddress }}' master_node
 ----
 
+[[Tryitoutlocally-CassandraQLSource]]
 ==== Apache Cassandra (source)
 
 This example polls Cassandra via CSQL (`select * from users`) in the `test` keyspace and transfers the result to the `mytopic` Kafka topic. 
@@ -208,6 +220,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelCassandraQLSourceConnector.properties
 ----
 
+[[Tryitoutlocally-CassandraQLSink]]
 ==== Apache Cassandra (sink)
 
 This example adds data to the `users` table in Cassandra from the data consumed from the `mytopic` Kafka topic. Notice how the `name` column is populated from the Kafka message using CQL comand `insert into users...`.
@@ -218,6 +231,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelCassandraQLSinkConnector.properties
 ----
 
+[[Tryitoutlocally-ElasticsearchSink]]
 === Elasticsearch (sink)
 
 This example passes data from `mytopic` Kafka topic to `sampleIndexName` index in Elasticsearch. Adjust properties in `examples/CamelElasticSearchSinkConnector.properties` to reflect your environment, for example change the `hostAddresses` to a valid Elasticsearch instance hostname and port.
@@ -251,6 +265,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelElasticSearchSinkConnector.properties
 ----
 
+[[Tryitoutlocally-FileSink]]
 === File (sink)
 
 This example appends data from `mytopic` Kafka topic to a file in `/tmp/kafkaconnect.txt`.
@@ -261,6 +276,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelFileSinkConnector.properties
 ----
 
+[[Tryitoutlocally-HttpSink]]
 === HTTP (sink)
 
 This example sends data from `mytopic` Kafka topic to a HTTP service. Adjust properties in `examples/CamelHttpSinkConnector.properties` for your environment, for example configuring the `camel.sink.url`. 
@@ -271,6 +287,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelHttpSinkConnector.properties
 ----
 
+[[Tryitoutlocally-JMSSource]]
 === JMS (source)
 
 This example receives messages from a JMS queue named `myqueue` and transfers them to `mytopic` Kafka topic. In this example ActiveMQ is used and it's configured to connect to the broker running on `localhost:61616`. Adjust properties in `examples/CamelJmsSourceConnector.properties` for your environment, for example configuring username and password by setting `camel.component.sjms2.connection-factory.userName=yourusername` and `camel.component.sjms2.connection-factory.password=yourpassword` or change the `camel.component.sjms2.connection-factory` and `camel.component.sjms2.connection-factory.brokerURL` to reflect your JMS implementation and URL.
@@ -281,6 +298,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelJmsSourceConnector.properties
 ----
 
+[[Tryitoutlocally-JMSSink]]
 === JMS (sink)
 
 This example receives messages from `mytopic` Kafka topic and transfers them to JMS queue named `myqueue`. In this example ActiveMQ is used and it's configured to connect to the broker running on `localhost:61616`. You can adjust properties in `examples/CamelJmsSinkConnector.properties` for your environment, for example configure username and password by adding `camel.component.sjms2.connection-factory.userName=yourusername` and `camel.component.sjms2.connection-factory.password=yourpassword` or change the `camel.component.sjms2.connection-factory` and `camel.component.sjms2.connection-factory.brokerURL` to reflect your JMS implementation and URL.
@@ -291,6 +309,7 @@
 $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties examples/CamelJmsSinkConnector.properties
 ----
 
+[[Tryitoutlocally-TelegramSource]]
 === Telegram (source)
 
 This example transfers messages sent to Telegram bot to the `mytopic` Kafka topic. Adjust to set telegram bot token in `examples/CamelTelegramSourceConnector.properties` to reflect your bot's token.
diff --git a/docs/modules/ROOT/pages/try-it-out-on-openshift-with-strimzi.adoc b/docs/modules/ROOT/pages/try-it-out-on-openshift-with-strimzi.adoc
index df399b0..d0ce476 100644
--- a/docs/modules/ROOT/pages/try-it-out-on-openshift-with-strimzi.adoc
+++ b/docs/modules/ROOT/pages/try-it-out-on-openshift-with-strimzi.adoc
@@ -1,9 +1,11 @@
+[[Tryitoutcloud-Tryitoutcloud]]
 = Try it out on OpenShift with Strimzi
 
 You can use the Camel Kafka connectors also on Kubernetes and OpenShift with the https://strimzi.io[Strimzi project].
 Strimzi provides a set of operators and container images for running Kafka on Kubernetes and OpenShift.
 The following example shows how to run it with Camel Kafka connectors on OpenShift.
 
+[[Tryitoutcloud-DeployKafka]]
 == Deploy Kafka and Kafka Connect
 
 First we install the Strimzi operator and use it to deploy the Kafka broker and Kafka Connect into our OpenShift project.
@@ -48,6 +50,7 @@
 oc apply -f https://github.com/strimzi/strimzi-kafka-operator/raw/0.13.0/examples/kafka-connect/kafka-connect-s2i-single-node-kafka.yaml
 ----
 
+[[Tryitoutcloud-AddCamelKafkaConnectors]]
 == Add Camel Kafka connector binaries
 
 Strimzi uses `Source2Image` builds to allow users to add their own connectors to the existing Strimzi Docker images.
@@ -77,6 +80,7 @@
 [{"class":"org.apache.camel.kafkaconnector.CamelSinkConnector","type":"sink","version":"0.0.1-SNAPSHOT"},{"class":"org.apache.camel.kafkaconnector.CamelSourceConnector","type":"source","version":"0.0.1-SNAPSHOT"},{"class":"org.apache.kafka.connect.file.FileStreamSinkConnector","type":"sink","version":"2.3.0"},{"class":"org.apache.kafka.connect.file.FileStreamSourceConnector","type":"source","version":"2.3.0"}]
 ----
 
+[[Tryitoutcloud-CreateConnectorInstances]]
 == Create connector instance
 
 Now we can create some instance of a connector plugin - got example of the S3 connector:
@@ -112,6 +116,7 @@
 oc exec -i -c kafka my-cluster-kafka-0 -- curl -s http://my-connect-cluster-connect-api:8083/connectors/s3-connector/status
 ----
 
+[[Tryitoutcloud-CheckMessages]]
 == Check received messages
 
 You can also run the Kafka console consumer to see the messages received from the topic:
diff --git a/examples/CamelSlackSinkConnector.properties b/examples/CamelSlackSinkConnector.properties
new file mode 100644
index 0000000..bfe6bcd
--- /dev/null
+++ b/examples/CamelSlackSinkConnector.properties
@@ -0,0 +1,26 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+name=CamelSlackSinkConnector
+tasks.max=1
+
+connector.class=org.apache.camel.kafkaconnector.slack.CamelSlackSinkConnector
+value.converter=org.apache.kafka.connect.storage.StringConverter
+key.converter=org.apache.kafka.connect.storage.StringConverter
+
+camel.sink.endpoint.webhookUrl=https://hooks.slack.com/path/to/id
+camel.sink.path.channel=#opensourcetest
+
+topics=my-topic
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index 394dcea..c930377 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -2,14 +2,15 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache</groupId>
-        <artifactId>apache</artifactId>
-        <version>21</version>
+        <groupId>org.apache.camel.kafkaconnector</groupId>
+        <artifactId>camel-kafka-connector-aggregator</artifactId>
+        <version>0.2.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
     </parent>
 
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>parent</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Camel-Kafka-Connector :: Parent</name>
@@ -49,7 +50,7 @@
         <version.maven.failsafe>2.22.2</version.maven.failsafe>
         <version.maven.surefire>3.0.0-M4</version.maven.surefire>
         <version.scala.library>2.12.4</version.scala.library>
-        <version.testcontainers>1.14.0</version.testcontainers>
+        <version.testcontainers>1.14.1</version.testcontainers>
         <version.qpid-jms-client>0.50.0</version.qpid-jms-client>
         <version.maven.maven-remote-resources-plugin>1.6.0</version.maven.maven-remote-resources-plugin>
 
@@ -273,6 +274,12 @@
                 <artifactId>commons-io</artifactId>
                 <version>${version.commons-io}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.activemq</groupId>
+                <artifactId>activemq-client</artifactId>
+                <version>${activemq.version}</version>
+                <scope>test</scope>
+            </dependency>
 
         </dependencies>
     </dependencyManagement>
diff --git a/pom.xml b/pom.xml
index 2f7bb83..37402be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
 
     <groupId>org.apache.camel.kafkaconnector</groupId>
     <artifactId>camel-kafka-connector-aggregator</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Camel-Kafka-Connector :: Root</name>
@@ -42,15 +42,16 @@
         <maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version>
         <maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
         <maven-source-plugin.version>3.1.0</maven-source-plugin.version>
+        <maven-checksum-maven-plugin.version>1.7</maven-checksum-maven-plugin.version>
     </properties>
 
     <modules>
         <module>parent</module>
         <module>core</module>
-        <module>tests</module>
         <module>buildingtools</module>
         <module>tooling</module>
         <module>connectors</module>
+        <module>tests</module>
     </modules>
 
     <developers>
@@ -303,6 +304,36 @@
                             </execution>
                         </executions>
                     </plugin>
+                    <plugin>
+                        <groupId>net.nicoulaj.maven.plugins</groupId>
+                        <artifactId>checksum-maven-plugin</artifactId>
+                        <version>${maven-checksum-maven-plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <id>source-release-checksum</id>
+                                <goals>
+                                    <goal>files</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <algorithms>
+                                <algorithm>SHA-512</algorithm>
+                            </algorithms>
+                            <csvSummary>false</csvSummary>
+                            <fileSets>
+                                <fileSet>
+                                    <directory>${project.build.directory}</directory>
+                                    <includes>
+                                        <include>${project.artifactId}-${project.version}.jar</include>
+                                        <include>${project.artifactId}-${project.version}-package.zip</include>
+                                        <include>${project.artifactId}-${project.version}-package.tar*</include>
+                                    </includes>
+                                </fileSet>
+                            </fileSets>
+                            <failIfNoFiles>false</failIfNoFiles><!-- usually, no file to do checksum: don't consider error -->
+                        </configuration>
+                    </plugin>
                 </plugins>
             </build>
         </profile>
diff --git a/tests/pom.xml b/tests/pom.xml
index 1eaa9eb..4768edf 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -17,15 +17,13 @@
   ~
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.camel.kafkaconnector</groupId>
         <artifactId>parent</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
+        <version>0.2.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
@@ -41,8 +39,9 @@
     </properties>
     <dependencies>
         <!--
-        See the comment on the PluginPathHelper class for details about why
-        the scope is set as provided for the connectors
+        This one is (temporarily) needed for providing supporting classes for the
+        ConnectRecordValueToMapTransformer - which is needed to properly convert record formats from
+        ElasticSearch to Kafka
         -->
         <dependency>
             <groupId>org.apache.camel.kafkaconnector</groupId>
@@ -50,16 +49,7 @@
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.kafkaconnector</groupId>
-            <artifactId>camel-sjms2-kafka-connector</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-telegram</artifactId>
-        </dependency>
+
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-cassandraql</artifactId>
@@ -114,6 +104,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-timer</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-slack</artifactId>
+        </dependency>
 
         <!-- test scope dependencies -->
         <dependency>
@@ -245,6 +239,12 @@
             <artifactId>qpid-jms-client</artifactId>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-client</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
@@ -269,9 +269,12 @@
                     images used when running the tests w/ those containers
                     - java.util.logging.manager sets the logging manager used in GlassFish to the log4j one. GlassFish
                     is used by the rest API of the Kafka Connect.
+                    - com.datastax.driver.FORCE_NIO=true prevents the ClassCastException from
+                    io.netty.channel.epoll.EpollEventLoopGroup cannot be cast to io.netty.channel.EventLoopGroup
+                    probably caused by a netty incompatibility somewhere
 
                      -->
-                    <argLine>-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dproject.basedir=${project.basedir}/.. -Dcom.amazonaws.sdk.disableCbor=true -Ditest.strimzi.container.image=${itest.strimzi.container.image} -Ditest.zookeeper.container.image=${itest.zookeeper.container.image}</argLine>
+                    <argLine>-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dcom.datastax.driver.FORCE_NIO=true -Dproject.basedir=${project.basedir}/.. -Dcom.amazonaws.sdk.disableCbor=true -Ditest.strimzi.container.image=${itest.strimzi.container.image} -Ditest.zookeeper.container.image=${itest.zookeeper.container.image}</argLine>
                     <skipTests>${skipIntegrationTests}</skipTests>
                 </configuration>
             </plugin>
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/BasicConnectorPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/BasicConnectorPropertyFactory.java
new file mode 100644
index 0000000..ffc6621
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/BasicConnectorPropertyFactory.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector;
+
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.kafka.connect.runtime.ConnectorConfig;
+
+public abstract class BasicConnectorPropertyFactory<T extends BasicConnectorPropertyFactory<T>> implements ConnectorPropertyFactory {
+    private Properties connectorProps = new Properties();
+
+    public T withName(String name) {
+        connectorProps.put(ConnectorConfig.NAME_CONFIG, name);
+
+        return (T) this;
+    }
+
+    public T withTasksMax(int tasksMax) {
+        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+
+        return (T) this;
+    }
+
+    public T withConnectorClass(String connectorClass) {
+        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, connectorClass);
+
+        return (T) this;
+    }
+
+    public T withKeyConverterClass(String converterClass) {
+        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, converterClass);
+
+        return (T) this;
+    }
+
+    public T withValueConverterClass(String converterClass) {
+        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, converterClass);
+
+        return (T) this;
+    }
+
+    public TransformsConfigBuilder<T> withTransformsConfig(String name) {
+        return new TransformsConfigBuilder<>((T) this, getProperties(), name);
+    }
+
+    protected T setProperty(String name, Object value) {
+        connectorProps.put(name, value);
+
+        return (T) this;
+    }
+
+    public static String classRef(String className) {
+        return "#class:" + className;
+    }
+
+    public T merge(Properties properties) {
+        Set<Map.Entry<Object, Object>> set = properties.entrySet();
+        connectorProps.putAll(set.stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b)->b)));
+
+        return (T) this;
+    }
+
+    @Override
+    public Properties getProperties() {
+        return connectorProps;
+    }
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/ConnectorPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/ConnectorPropertyFactory.java
index 80ddd3e..e3648b2 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/ConnectorPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/ConnectorPropertyFactory.java
@@ -19,17 +19,28 @@
 
 import java.util.Properties;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * An interface for producing different types of connector properties that match
- * an specific type of connector in test. Examples of runtime equivalent for this
- * file are the CamelSinkConnector.properties and the CamelSourceConnector.properties
- * files
+ * an specific type of connector in test.
  */
 public interface ConnectorPropertyFactory {
 
+
     /**
      * Gets the properties used to configure the connector
      * @return a Properties object containing the set of properties for the connector
      */
     Properties getProperties();
+
+    default void log() {
+        Properties properties = getProperties();
+
+        Logger log = LoggerFactory.getLogger(ConnectorPropertyFactory.class);
+
+        log.info("Using the following properties for the test: ");
+        properties.entrySet().forEach(entry -> log.info("{}={}", entry.getKey(), entry.getValue()));
+    }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/EndpointUrlBuilder.java b/tests/src/test/java/org/apache/camel/kafkaconnector/EndpointUrlBuilder.java
new file mode 100644
index 0000000..122fcaa
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/EndpointUrlBuilder.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector;
+
+import java.util.function.Function;
+
+public class EndpointUrlBuilder<T extends ConnectorPropertyFactory> {
+    private final Function<String, T> setter;
+    private String baseUrl;
+    private boolean started;
+
+
+    public EndpointUrlBuilder(Function<String, T> setter, String baseUrl) {
+        this.setter = setter;
+        this.baseUrl = baseUrl;
+    }
+
+    private EndpointUrlBuilder<T> start() {
+        if (started) {
+            throw new RuntimeException("Already started preparing the URL for formatting");
+        }
+
+        started = true;
+
+        return this;
+    }
+
+    public EndpointUrlBuilder<T> append(String name, String value) {
+        if (!started) {
+            start();
+
+            baseUrl = String.format("%s?%s=%s", baseUrl, name, value);
+        } else {
+            baseUrl = String.format("%s&%s=%s", baseUrl, name, value);
+        }
+
+        return this;
+    }
+
+    public EndpointUrlBuilder<T> append(String name, int value) {
+        if (!started) {
+            start();
+
+            baseUrl = String.format("%s?%s=%d", baseUrl, name, value);
+        } else {
+            baseUrl = String.format("%s&%s=%d", baseUrl, name, value);
+        }
+
+        return this;
+    }
+
+    public T buildUrl() {
+        return setter.apply(baseUrl);
+    }
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/PluginPathHelper.java b/tests/src/test/java/org/apache/camel/kafkaconnector/PluginPathHelper.java
index a4a8413..3b74283 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/PluginPathHelper.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/PluginPathHelper.java
@@ -31,6 +31,15 @@
 public final class PluginPathHelper {
     private static final Logger LOG = LoggerFactory.getLogger(PluginPathHelper.class);
 
+    private static final String[] MODULES = {
+        "core", "connectors/camel-sjms2-kafka-connector", "connectors/camel-cql-kafka-connector",
+        "connectors/camel-aws-sns-kafka-connector", "connectors/camel-aws-sqs-kafka-connector",
+        "connectors/camel-aws-s3-kafka-connector", "connectors/camel-aws-kinesis-kafka-connector",
+        "connectors/camel-elasticsearch-rest-kafka-connector", "connectors/camel-http-kafka-connector",
+        "connectors/camel-timer-kafka-connector", "connectors/camel-file-kafka-connector",
+        "connectors/camel-slack-kafka-connector"
+    };
+
     private static class PluginWalker extends DirectoryWalker<String> {
         @Override
         protected void handleFile(File file, int depth, Collection<String> results) throws IOException {
@@ -40,14 +49,31 @@
                 if (fileName.contains("kafka-connector") && fileName.contains("camel")) {
                     String parentDir = file.getParentFile().getCanonicalPath();
                     if (parentDir.endsWith("target")) {
-                        LOG.debug("Adding file: {}", file.getCanonicalPath());
+                        String pluginDir = file.getParentFile().getCanonicalPath();
+                        LOG.debug("Adding directory: {}", pluginDir);
 
-                        results.add(file.getCanonicalPath());
+                        results.add(pluginDir);
                     }
                 }
             }
         }
 
+
+
+        @Override
+        protected boolean handleDirectory(File directory, int depth, Collection<String> results) throws IOException {
+            String directoryName = directory.getName();
+
+            if (directoryName.equals("target")) {
+                String pluginDir = directory.getCanonicalPath();
+                LOG.debug("Adding directory: {}", pluginDir);
+
+                results.add(pluginDir);
+            }
+
+            return true;
+        }
+
         public List<String> findPlugins(File startDir) {
             List<String> results = new ArrayList<>();
 
@@ -79,9 +105,14 @@
     }
 
     private static List<String> findPlugins() {
-        return findPlugins("core", "connectors/camel-sjms2-kafka-connector");
+        /*
+         * Only load the subset of modules that has a related test, otherwise the startup time for the
+         * Kafka Connect runtime is extremely long
+         */
+        return findPlugins(MODULES);
     }
 
+
     /*
      * We need to construct a list of directories containing *only* the connector classes (ie.: those that
      * specialize Kafka's Connector abstract class.
@@ -97,8 +128,8 @@
      * 2) is located in the target directory
      * 3) contains the strings 'camel' and 'kafka-connector' as part of their name.
      *
-     * This is also leverage by the fact that the core and connectors modules have the provided scope on the test
-     * pom file.
+     * Then for every connector jar file that it finds, it configures the embedded runtime to  includes the parent dir
+     * into the configuration.
      *
      * Why it does this?
      *
@@ -111,7 +142,7 @@
      */
     public static String pluginPaths() {
         String ret = findPlugins().stream().collect(Collectors.joining(","));
-        LOG.info("Returning the following directories for the plugins: {}", ret);
+        LOG.info("Returning the following directories for the plugin path: {}", ret);
 
         return ret;
     }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/SinkConnectorPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/SinkConnectorPropertyFactory.java
new file mode 100644
index 0000000..56620ce
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/SinkConnectorPropertyFactory.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector;
+
+public abstract class SinkConnectorPropertyFactory<T extends SinkConnectorPropertyFactory<T>>  extends BasicConnectorPropertyFactory<T> {
+
+    public T withTopics(String topics) {
+        getProperties().put("topics", topics);
+
+        return (T) this;
+    }
+
+    public T withSinkUrl(String sinkUrl) {
+        getProperties().put("camel.sink.url", sinkUrl);
+
+        return (T) this;
+    }
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/SourceConnectorPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/SourceConnectorPropertyFactory.java
new file mode 100644
index 0000000..3261388
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/SourceConnectorPropertyFactory.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector;
+
+public abstract class SourceConnectorPropertyFactory<T extends SourceConnectorPropertyFactory<T>>  extends BasicConnectorPropertyFactory<T> {
+
+    public T withKafkaTopic(String topic) {
+        getProperties().put("camel.source.kafka.topic", topic);
+
+        return (T) this;
+    }
+
+    public T withSourceUrl(String sinkUrl) {
+        getProperties().put("camel.source.url", sinkUrl);
+
+        return (T) this;
+    }
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/TransformsConfigBuilder.java b/tests/src/test/java/org/apache/camel/kafkaconnector/TransformsConfigBuilder.java
new file mode 100644
index 0000000..4fc4425
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/TransformsConfigBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector;
+
+import java.util.Properties;
+
+import org.apache.kafka.connect.runtime.ConnectorConfig;
+
+
+public class TransformsConfigBuilder<T extends ConnectorPropertyFactory> {
+    private T handle;
+    private Properties properties;
+    private String name;
+
+    public TransformsConfigBuilder(T handle, Properties properties, String name) {
+        this.handle = handle;
+        this.properties = properties;
+        this.name = name;
+
+        properties.put(ConnectorConfig.TRANSFORMS_CONFIG, name);
+    }
+
+    public TransformsConfigBuilder<T> withEntry(String key, String value) {
+        properties.put(ConnectorConfig.TRANSFORMS_CONFIG + "." + name + "." + key, value);
+
+        return this;
+    }
+
+    public T end() {
+        return handle;
+    }
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/clients/aws/sqs/AWSSQSClient.java b/tests/src/test/java/org/apache/camel/kafkaconnector/clients/aws/sqs/AWSSQSClient.java
index cb4539d..76025c2 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/clients/aws/sqs/AWSSQSClient.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/clients/aws/sqs/AWSSQSClient.java
@@ -24,6 +24,8 @@
 
 import com.amazonaws.services.sqs.AmazonSQS;
 import com.amazonaws.services.sqs.model.CreateQueueRequest;
+import com.amazonaws.services.sqs.model.DeleteQueueResult;
+import com.amazonaws.services.sqs.model.GetQueueUrlResult;
 import com.amazonaws.services.sqs.model.Message;
 import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
 import com.amazonaws.services.sqs.model.ReceiveMessageResult;
@@ -85,4 +87,27 @@
 
         sqs.sendMessage(request);
     }
+
+    public boolean deleteQueue(String queue) {
+        GetQueueUrlResult getQueueUrlResult = sqs.getQueueUrl(queue);
+
+        if (getQueueUrlResult.getSdkHttpMetadata().getHttpStatusCode() == 404) {
+            return true;
+        } else {
+            if (getQueueUrlResult.getSdkHttpMetadata().getHttpStatusCode() != 200) {
+                LOG.warn("Unable to get queue {} for deletion", queue);
+
+                return false;
+            }
+        }
+
+        DeleteQueueResult result = sqs.deleteQueue(getQueueUrlResult.getQueueUrl());
+
+        if (result.getSdkHttpMetadata().getHttpStatusCode() != 200) {
+            LOG.warn("Unable to delete queue {}", queue);
+            return false;
+        }
+
+        return true;
+    }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/clients/kafka/KafkaClient.java b/tests/src/test/java/org/apache/camel/kafkaconnector/clients/kafka/KafkaClient.java
index 083abd4..439a301 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/clients/kafka/KafkaClient.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/clients/kafka/KafkaClient.java
@@ -89,7 +89,7 @@
     public void produce(String topic, V message) throws ExecutionException, InterruptedException {
         Properties props = producerPropertyFactory.getProperties();
 
-        KafkaProducer<K, V> producer = new KafkaProducer<K, V>(props);
+        KafkaProducer<K, V> producer = new KafkaProducer<>(props);
         ProducerRecord<K, V> record = new ProducerRecord<>(topic, message);
 
         Future<RecordMetadata> future = producer.send(record);
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/aws/AWSServiceFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/aws/AWSServiceFactory.java
index ea12594..d26d2b6 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/aws/AWSServiceFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/aws/AWSServiceFactory.java
@@ -17,6 +17,9 @@
 
 package org.apache.camel.kafkaconnector.services.aws;
 
+import com.amazonaws.services.kinesis.AmazonKinesis;
+import com.amazonaws.services.s3.AmazonS3;
+import org.apache.camel.kafkaconnector.clients.aws.sqs.AWSSQSClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -26,7 +29,7 @@
     private AWSServiceFactory() {
     }
 
-    public static AWSService createSQSService() {
+    public static AWSService<AWSSQSClient> createSQSService() {
         String awsInstanceType = System.getProperty("aws-service.instance.type");
         LOG.info("Creating a {} AWS SQS instance", awsInstanceType);
 
@@ -35,7 +38,7 @@
         }
 
         if (awsInstanceType.equals("remote")) {
-            return new AWSRemoteService(AWSRemoteService::newSQSClient);
+            return new AWSRemoteService<>(AWSRemoteService::newSQSClient);
         }
 
         LOG.error("Invalid AWS instance type: {}. Must be either 'remote' or 'local-aws-container'",
@@ -43,7 +46,7 @@
         throw new UnsupportedOperationException("Invalid AWS instance type");
     }
 
-    public static AWSService createSNSService() {
+    public static AWSService<AWSSQSClient> createSNSService() {
         String awsInstanceType = System.getProperty("aws-service.instance.type");
         LOG.info("Creating a {} AWS SNS instance", awsInstanceType);
 
@@ -52,7 +55,7 @@
         }
 
         if (awsInstanceType.equals("remote")) {
-            return new AWSRemoteService(AWSRemoteService::newSQSClient);
+            return new AWSRemoteService<>(AWSRemoteService::newSQSClient);
         }
 
         LOG.error("Invalid AWS instance type: {}. Must be either 'remote' or 'local-aws-container'",
@@ -61,7 +64,7 @@
 
     }
 
-    public static AWSService createKinesisService() {
+    public static AWSService<AmazonKinesis> createKinesisService() {
         String awsInstanceType = System.getProperty("aws-service.kinesis.instance.type");
         LOG.info("Creating a {} AWS kinesis instance", awsInstanceType);
 
@@ -70,7 +73,7 @@
         }
 
         if (awsInstanceType.equals("remote")) {
-            return new AWSRemoteService(AWSClientUtils::newKinesisClient);
+            return new AWSRemoteService<>(AWSClientUtils::newKinesisClient);
         }
 
         LOG.error("Invalid AWS instance type: {}. Must be either 'remote' or 'local-aws-container'",
@@ -78,7 +81,7 @@
         throw new UnsupportedOperationException("Invalid AWS instance type");
     }
 
-    public static AWSService createS3Service() {
+    public static AWSService<AmazonS3> createS3Service() {
         String awsInstanceType = System.getProperty("aws-service.instance.type");
         LOG.info("Creating a {} AWS S3 instance", awsInstanceType);
 
@@ -87,7 +90,7 @@
         }
 
         if (awsInstanceType.equals("remote")) {
-            return new AWSRemoteService(AWSClientUtils::newS3Client);
+            return new AWSRemoteService<>(AWSClientUtils::newS3Client);
         }
 
         LOG.error("Invalid AWS instance type: {}. Must be either 'remote' or 'local-aws-container'",
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/cassandra/CassandraContainer.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/cassandra/CassandraContainer.java
index 70ffe35..49a1bd0 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/cassandra/CassandraContainer.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/cassandra/CassandraContainer.java
@@ -22,7 +22,7 @@
 /**
  * A local instance of Apache Cassandra
  */
-public class CassandraContainer extends GenericContainer {
+public class CassandraContainer extends GenericContainer<CassandraContainer> {
     private static final String CASSANDRA_IMAGE = "cassandra:3.11";
     private static final int CQL3_PORT = 9042;
 
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/jms/JMSContainer.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/jms/JMSContainer.java
index 9366373..de72add 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/jms/JMSContainer.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/jms/JMSContainer.java
@@ -23,7 +23,7 @@
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.images.builder.ImageFromDockerfile;
 
-public abstract class JMSContainer extends GenericContainer {
+public abstract class JMSContainer extends GenericContainer<JMSContainer> {
 
 
     public JMSContainer(ImageFromDockerfile dockerfile) {
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/EmbeddedKafkaService.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/EmbeddedKafkaService.java
index 016305a..1eec742 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/EmbeddedKafkaService.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/EmbeddedKafkaService.java
@@ -47,7 +47,7 @@
 
         String pluginPaths = PluginPathHelper.pluginPaths();
 
-        LOG.info("Adding the following directories to the plugin path: {}", pluginPaths);
+        LOG.info("Adding the returned directories to the plugin path. This may take A VERY long time to complete");
         workerProps.put(WorkerConfig.PLUGIN_PATH_CONFIG, pluginPaths);
 
         LOG.info("Building the embedded Kafka connect instance");
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/StrimziContainer.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/StrimziContainer.java
index 0b7e45d..6e40b84 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/StrimziContainer.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/StrimziContainer.java
@@ -24,7 +24,7 @@
 import org.testcontainers.containers.Network;
 import org.testcontainers.containers.wait.strategy.Wait;
 
-public class StrimziContainer extends GenericContainer {
+public class StrimziContainer extends GenericContainer<StrimziContainer> {
     private static final String STRIMZI_CONTAINER = System.getProperty("itest.strimzi.container.image");
     private static final int KAFKA_PORT = 9092;
 
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/ZookeeperContainer.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/ZookeeperContainer.java
index c6d81f1..87eeaf2 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/ZookeeperContainer.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafka/ZookeeperContainer.java
@@ -24,7 +24,7 @@
 import org.testcontainers.containers.Network;
 import org.testcontainers.containers.wait.strategy.Wait;
 
-public class ZookeeperContainer extends GenericContainer {
+public class ZookeeperContainer extends GenericContainer<ZookeeperContainer> {
     private static final String ZOOKEEPER_CONTAINER = System.getProperty("itest.zookeeper.container.image");
     private static final int ZOOKEEPER_PORT = 2181;
 
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectEmbedded.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectEmbedded.java
index 3179b19..54d7774 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectEmbedded.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectEmbedded.java
@@ -54,6 +54,7 @@
         propertyFactory.getProperties().forEach((k, v) -> convertProperty(configuredProperties, k, v));
 
         connectorName = configuredProperties.get(ConnectorConfig.NAME_CONFIG);
+        LOG.info("Initializing connector {}", connectorName);
         cluster.configureConnector(connectorName, configuredProperties);
         LOG.trace("Added the new connector");
     }
@@ -73,6 +74,7 @@
     public void stop() {
         if (connectorName != null) {
             try {
+                LOG.info("Removing connector {}", connectorName);
                 cluster.deleteConnector(connectorName);
             } finally {
                 connectorName = null;
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectRunner.java b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectRunner.java
index e34921e..89be0da 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectRunner.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/services/kafkaconnect/KafkaConnectRunner.java
@@ -30,7 +30,6 @@
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
 import org.apache.kafka.connect.connector.policy.AllConnectorClientConfigOverridePolicy;
-import org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;
 import org.apache.kafka.connect.runtime.Connect;
 import org.apache.kafka.connect.runtime.ConnectorConfig;
 import org.apache.kafka.connect.runtime.Herder;
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelAWSSNSPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelAWSSNSPropertyFactory.java
index d801d7d..6025ff9 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelAWSSNSPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelAWSSNSPropertyFactory.java
@@ -17,57 +17,79 @@
 
 package org.apache.camel.kafkaconnector.sink.aws.sns;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
+import com.amazonaws.regions.Regions;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.clients.aws.AWSConfigs;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
 
 /**
  * Creates the set of properties used by a Camel JMS Sink Connector
  */
-class CamelAWSSNSPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String queue;
-    private final Properties amazonConfigs;
+final class CamelAWSSNSPropertyFactory extends SinkConnectorPropertyFactory<CamelAWSSNSPropertyFactory> {
+    public static final Map<String, String> SPRING_STYLE = new HashMap<>();
+    public static final Map<String, String> KAFKA_STYLE = new HashMap<>();
 
+    static {
+        SPRING_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-sns.accessKey");
+        SPRING_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-sns.secretKey");
+        SPRING_STYLE.put(AWSConfigs.REGION, "camel.component.aws-sns.region");
 
-    CamelAWSSNSPropertyFactory(int tasksMax, String topic, String queue, Properties amazonConfigs) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.queue = queue;
-        this.amazonConfigs = amazonConfigs;
+        KAFKA_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-sns.access-key");
+        KAFKA_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-sns.secret-key");
+        KAFKA_STYLE.put(AWSConfigs.REGION, "camel.component.aws-sns.region");
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelAWSSNSSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    private CamelAWSSNSPropertyFactory() {
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
+    public EndpointUrlBuilder<CamelAWSSNSPropertyFactory> withUrl(String topicOrArn) {
+        String queueUrl = String.format("aws-sns://%s", topicOrArn);
 
-        String queueUrl = "aws-sns://" + queue + "?subscribeSNStoSQS=true"
-                + "&queueUrl=" + amazonConfigs.getProperty(AWSConfigs.AMAZON_AWS_SNS_2_SQS_QUEUE_URL);
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
+    }
 
-        connectorProps.put("camel.sink.url", queueUrl);
-        connectorProps.put("topics", topic);
+    public CamelAWSSNSPropertyFactory withTopicOrArn(String topicOrArn) {
+        return setProperty("camel.sink.path.topicNameOrArn", topicOrArn);
+    }
 
-        connectorProps.put("camel.component.aws-sns.configuration.access-key",
+    public CamelAWSSNSPropertyFactory withSubscribeSNStoSQS(String queue) {
+        return setProperty("camel.sink.endpoint.subscribeSNStoSQS", "true")
+                .setProperty("camel.sink.endpoint.queueUrl", queue);
+    }
+
+    public CamelAWSSNSPropertyFactory withAmazonConfig(Properties amazonConfigs) {
+        return withAmazonConfig(amazonConfigs, this.SPRING_STYLE);
+    }
+
+    public CamelAWSSNSPropertyFactory withAmazonConfig(Properties amazonConfigs, Map<String, String> style) {
+        String accessKeyKey = style.get(AWSConfigs.ACCESS_KEY);
+        String secretKeyKey = style.get(AWSConfigs.SECRET_KEY);
+        String regionKey = style.get(AWSConfigs.REGION);
+
+        setProperty(accessKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, ""));
-        connectorProps.put("camel.component.aws-sns.configuration.secret-key",
+        setProperty(secretKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, ""));
+        return setProperty(regionKey,
+                amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()));
+    }
 
-        connectorProps.put("camel.component.aws-sns.configuration.region",
-            amazonConfigs.getProperty(AWSConfigs.REGION, ""));
-
-        connectorProps.put("camel.component.aws-sns.configuration", "#class:"
-                + TestSNSConfiguration.class.getName());
+    public CamelAWSSNSPropertyFactory withConfiguration(String configurationClass) {
+        return setProperty("camel.component.aws-sns.configuration",
+                classRef(configurationClass));
+    }
 
 
-        return connectorProps;
+    public static CamelAWSSNSPropertyFactory basic() {
+        return new CamelAWSSNSPropertyFactory()
+                .withName("CamelAWSSNSSinkConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.awssns.CamelAwssnsSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelSinkAWSSNSITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelSinkAWSSNSITCase.java
index d486c75..c6ad714 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelSinkAWSSNSITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sns/CamelSinkAWSSNSITCase.java
@@ -20,10 +20,12 @@
 import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
+import com.amazonaws.regions.Regions;
 import com.amazonaws.services.sqs.model.Message;
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
 import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
@@ -59,6 +61,7 @@
     @BeforeEach
     public void setUp() {
         awsSqsClient = service.getClient();
+        received = 0;
     }
 
     private boolean checkMessages(List<Message> messages) {
@@ -87,6 +90,36 @@
         }
     }
 
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        final String sqsQueue = awsSqsClient.getQueue(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS);
+        LOG.info("Created SQS queue {}", sqsQueue);
+
+        connectorPropertyFactory.log();
+
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
+
+        ExecutorService service = Executors.newCachedThreadPool();
+
+        LOG.debug("Creating the consumer ...");
+        CountDownLatch latch = new CountDownLatch(1);
+        service.submit(() -> consumeMessages(latch));
+
+        KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
+
+        for (int i = 0; i < expect; i++) {
+            kafkaClient.produce(TestCommon.getDefaultTestTopic(this.getClass()), "Sink test message " + i);
+        }
+
+        LOG.debug("Created the consumer ... About to receive messages");
+
+        if (latch.await(120, TimeUnit.SECONDS)) {
+            assertTrue(received == expect,
+                    "Didn't process the expected amount of messages: " + received + " != " + expect);
+        } else {
+            fail("Failed to receive the messages within the specified time");
+        }
+    }
+
 
     @Test
     @Timeout(value = 90)
@@ -95,38 +128,73 @@
             final String sqsQueue = awsSqsClient.getQueue(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS);
             LOG.info("Created SQS queue {}", sqsQueue);
 
-            Properties properties = service.getConnectionProperties();
-            properties.put(AWSConfigs.AMAZON_AWS_SNS_2_SQS_QUEUE_URL, sqsQueue);
+            Properties amazonProperties = service.getConnectionProperties();
 
-            ConnectorPropertyFactory testProperties = new CamelAWSSNSPropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()), TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS, properties);
+            ConnectorPropertyFactory connectorPropertyFactory = CamelAWSSNSPropertyFactory.basic()
+                    .withName("CamelAWSSNSSinkConnectorDefault")
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withTopicOrArn(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS)
+                    .withSubscribeSNStoSQS(sqsQueue)
+                    .withConfiguration(TestSNSConfiguration.class.getName())
+                    .withAmazonConfig(amazonProperties);
 
-            getKafkaConnectService().initializeConnector(testProperties);
-
-            ExecutorService service = Executors.newCachedThreadPool();
-
-            LOG.debug("Creating the consumer ...");
-            CountDownLatch latch = new CountDownLatch(1);
-            service.submit(() -> consumeMessages(latch));
-
-            KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
-
-            for (int i = 0; i < expect; i++) {
-                kafkaClient.produce(TestCommon.getDefaultTestTopic(this.getClass()), "Sink test message " + i);
-            }
-
-            LOG.debug("Created the consumer ... About to receive messages");
-
-            if (latch.await(120, TimeUnit.SECONDS)) {
-                assertTrue(received == expect,
-                        "Didn't process the expected amount of messages: " + received + " != " + expect);
-            } else {
-                fail("Failed to receive the messages within the specified time");
-            }
+            runTest(connectorPropertyFactory);
         } catch (Exception e) {
             LOG.error("Amazon SNS test failed: {}", e.getMessage(), e);
             fail(e.getMessage());
         }
+    }
 
+    @Test
+    @Timeout(value = 90)
+    public void testBasicSendReceiveUsingKafkaStyle() {
+        try {
+            final String sqsQueue = awsSqsClient.getQueue(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS);
+            LOG.info("Created SQS queue {}", sqsQueue);
+
+            Properties amazonProperties = service.getConnectionProperties();
+
+            ConnectorPropertyFactory connectorPropertyFactory = CamelAWSSNSPropertyFactory.basic()
+                    .withName("CamelAWSSNSSinkKafkaStyleConnector")
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withTopicOrArn(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS)
+                    .withSubscribeSNStoSQS(sqsQueue)
+                    .withConfiguration(TestSNSConfiguration.class.getName())
+                    .withAmazonConfig(amazonProperties, CamelAWSSNSPropertyFactory.KAFKA_STYLE);
+
+            runTest(connectorPropertyFactory);
+        } catch (Exception e) {
+            LOG.error("Amazon SNS test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    @Timeout(value = 90)
+    public void testBasicSendReceiveUsingUrl() {
+        try {
+            final String sqsQueue = awsSqsClient.getQueue(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS);
+            LOG.info("Created SQS queue {}", sqsQueue);
+
+            Properties amazonProperties = service.getConnectionProperties();
+
+            ConnectorPropertyFactory connectorPropertyFactory = CamelAWSSNSPropertyFactory.basic()
+                    .withName("CamelAWSSNSSinkKafkaStyleConnector")
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withUrl(TestCommon.DEFAULT_SQS_QUEUE_FOR_SNS)
+                        .append("queueUrl", sqsQueue)
+                        .append("subscribeSNStoSQS", "true")
+                        .append("accessKey", amazonProperties.getProperty(AWSConfigs.ACCESS_KEY))
+                        .append("secretKey", amazonProperties.getProperty(AWSConfigs.SECRET_KEY))
+                        .append("protocol", amazonProperties.getProperty(AWSConfigs.PROTOCOL))
+                        .append("region", amazonProperties.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()))
+                        .append("configuration", "#class:" + TestSNSConfiguration.class.getName())
+                        .buildUrl();
+
+            runTest(connectorPropertyFactory);
+        } catch (Exception e) {
+            LOG.error("Amazon SNS test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelAWSSQSPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelAWSSQSPropertyFactory.java
index d4b52c5..e6c709f 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelAWSSQSPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelAWSSQSPropertyFactory.java
@@ -17,70 +17,95 @@
 
 package org.apache.camel.kafkaconnector.sink.aws.sqs;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
 import com.amazonaws.regions.Regions;
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.clients.aws.AWSConfigs;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
 
 /**
  * Creates the set of properties used by a Camel JMS Sink Connector
  */
-class CamelAWSSQSPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String queue;
-    private final Properties amazonConfigs;
+final class CamelAWSSQSPropertyFactory extends SinkConnectorPropertyFactory<CamelAWSSQSPropertyFactory> {
+    public static final Map<String, String> SPRING_STYLE = new HashMap<>();
+    public static final Map<String, String> KAFKA_STYLE = new HashMap<>();
+
+    static {
+        SPRING_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-sqs.accessKey");
+        SPRING_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-sqs.secretKey");
+        SPRING_STYLE.put(AWSConfigs.REGION, "camel.component.aws-sqs.region");
+        SPRING_STYLE.put(AWSConfigs.PROTOCOL, "camel.sink.endpoint.protocol");
+        SPRING_STYLE.put(AWSConfigs.AMAZON_AWS_HOST, "camel.sink.endpoint.amazonAWSHost");
 
 
-    CamelAWSSQSPropertyFactory(int tasksMax, String topic, String queue, Properties amazonConfigs) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.queue = queue;
-        this.amazonConfigs = amazonConfigs;
+        KAFKA_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-sqs.access-key");
+        KAFKA_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-sqs.secret-key");
+        KAFKA_STYLE.put(AWSConfigs.REGION, "camel.component.aws-sqs.region");
+        KAFKA_STYLE.put(AWSConfigs.PROTOCOL, "camel.sink.endpoint.protocol");
+        KAFKA_STYLE.put(AWSConfigs.AMAZON_AWS_HOST, "camel.sink.endpoint.amazonAWSHost");
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelAWSSQSSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
-
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-
-        String accessKey = amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, "");
-        String secretKey = amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, "");
-
-        String region = amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name());
-
-        String queueUrl = String.format("aws-sqs://%s?autoCreateQueue=true&accessKey=%s&secretKey=%s&region=%s",
-                    queue, accessKey, secretKey, region);
-
-        String protocol = amazonConfigs.getProperty(AWSConfigs.PROTOCOL);
-        if (protocol != null && !protocol.isEmpty()) {
-            queueUrl = String.format("%s&protocol=%s", queueUrl, protocol);
-        }
-
-        String amazonAWSHost = amazonConfigs.getProperty(AWSConfigs.AMAZON_AWS_HOST);
-        if (amazonAWSHost != null && !amazonAWSHost.isEmpty()) {
-            queueUrl = String.format("%s&amazonAWSHost=%s", queueUrl, amazonAWSHost);
-        }
+    private CamelAWSSQSPropertyFactory() {
+    }
 
 
-        connectorProps.put("camel.sink.url", queueUrl);
-        connectorProps.put("topics", topic);
+    public CamelAWSSQSPropertyFactory withAmazonConfig(Properties amazonConfigs) {
+        return withAmazonConfig(amazonConfigs, this.SPRING_STYLE);
+    }
 
-        connectorProps.put("camel.component.aws-sqs.configuration.access-key",
+    public CamelAWSSQSPropertyFactory withAmazonConfig(Properties amazonConfigs, Map<String, String> style) {
+        String accessKeyKey = style.get(AWSConfigs.ACCESS_KEY);
+        String secretKeyKey = style.get(AWSConfigs.SECRET_KEY);
+        String regionKey = style.get(AWSConfigs.REGION);
+        String protocolKey = style.get(AWSConfigs.PROTOCOL);
+        String hostKey = style.get(AWSConfigs.AMAZON_AWS_HOST);
+
+        setProperty(accessKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, ""));
-        connectorProps.put("camel.component.aws-sqs.configuration.secret-key",
+        setProperty(secretKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, ""));
+        setProperty(regionKey,
+                amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()));
 
-        connectorProps.put("camel.component.aws-sqs.configuration.region", region);
+        String protocol = amazonConfigs.getProperty(AWSConfigs.PROTOCOL, "");
 
-        return connectorProps;
+        if (protocol != null && !protocol.isEmpty()) {
+            setProperty(protocolKey, protocol);
+        }
+
+        String amazonAwsHost = amazonConfigs.getProperty(AWSConfigs.AMAZON_AWS_HOST, "");
+        if (amazonAwsHost != null && !amazonAwsHost.isEmpty()) {
+            setProperty(hostKey, amazonAwsHost);
+        }
+
+        return this;
     }
+
+    public CamelAWSSQSPropertyFactory withConfiguration(String configurationClass) {
+        return setProperty("camel.component.aws-sqs.configuration",
+                classRef(configurationClass));
+    }
+
+    public EndpointUrlBuilder<CamelAWSSQSPropertyFactory> withUrl(String queueNameOrArn) {
+        String queueUrl = String.format("aws-sqs://%s", queueNameOrArn);
+
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
+    }
+
+    public CamelAWSSQSPropertyFactory withQueueNameOrArn(String queueNameOrArn) {
+        return setProperty("camel.sink.path.queueNameOrArn", queueNameOrArn);
+    }
+
+    public static CamelAWSSQSPropertyFactory basic() {
+        return new CamelAWSSQSPropertyFactory()
+                .withName("CamelAwssqsSinkConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.awssqs.CamelAwssqsSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
+    }
+
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelSinkAWSSQSITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelSinkAWSSQSITCase.java
index 2a4946d..7030a3f 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelSinkAWSSQSITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/aws/sqs/CamelSinkAWSSQSITCase.java
@@ -24,6 +24,7 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
+import com.amazonaws.regions.Regions;
 import com.amazonaws.services.sqs.model.Message;
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
 import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
@@ -59,6 +60,7 @@
     @BeforeEach
     public void setUp() {
         awssqsClient = awsService.getClient();
+        received = 0;
     }
 
     private boolean checkMessages(List<Message> messages) {
@@ -99,39 +101,99 @@
         }
     }
 
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws Exception {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnectorBlocking(connectorPropertyFactory);
+
+        LOG.debug("Creating the consumer ...");
+        ExecutorService service = Executors.newCachedThreadPool();
+
+        CountDownLatch latch = new CountDownLatch(1);
+        service.submit(() -> consumeMessages(latch));
+
+        LOG.debug("Creating the producer and sending messages ...");
+        produceMessages();
+
+        LOG.debug("Waiting for the test to complete");
+        if (latch.await(110, TimeUnit.SECONDS)) {
+            assertTrue(received == expect,
+                    "Didn't process the expected amount of messages: " + received + " != " + expect);
+        } else {
+            fail(String.format("Failed to receive the messages within the specified time: received %d of %d",
+                    received, expect));
+        }
+    }
+
 
     @Test
     @Timeout(value = 120)
     public void testBasicSendReceive() {
         try {
-            Properties properties = awsService.getConnectionProperties();
+            Properties amazonProperties = awsService.getConnectionProperties();
 
-            ConnectorPropertyFactory testProperties = new CamelAWSSQSPropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()), TestCommon.DEFAULT_SQS_QUEUE, properties);
+            ConnectorPropertyFactory testProperties = CamelAWSSQSPropertyFactory
+                    .basic()
+                    .withName("CamelAwssqsSinkConnectorSpringBootStyle")
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withAmazonConfig(amazonProperties)
+                    .withQueueNameOrArn(TestCommon.DEFAULT_SQS_QUEUE);
 
-            getKafkaConnectService().initializeConnectorBlocking(testProperties);
+            runTest(testProperties);
 
-            LOG.debug("Creating the consumer ...");
-            ExecutorService service = Executors.newCachedThreadPool();
-
-            CountDownLatch latch = new CountDownLatch(1);
-            service.submit(() -> consumeMessages(latch));
-
-            LOG.debug("Creating the producer and sending messages ...");
-            produceMessages();
-
-            LOG.debug("Waiting for the test to complete");
-            if (latch.await(110, TimeUnit.SECONDS)) {
-                assertTrue(received == expect,
-                        "Didn't process the expected amount of messages: " + received + " != " + expect);
-            } else {
-                fail(String.format("Failed to receive the messages within the specified time: received %d of %d",
-                        received, expect));
-            }
         } catch (Exception e) {
             LOG.error("Amazon SQS test failed: {}", e.getMessage(), e);
             fail(e.getMessage());
         }
     }
 
+    @Test
+    @Timeout(value = 120)
+    public void testBasicSendReceiveUsingKafkaStyle() {
+        try {
+            Properties amazonProperties = awsService.getConnectionProperties();
+
+            ConnectorPropertyFactory testProperties = CamelAWSSQSPropertyFactory
+                    .basic()
+                    .withName("CamelAwssqsSinkConnectorKafkaStyle")
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withAmazonConfig(amazonProperties, CamelAWSSQSPropertyFactory.KAFKA_STYLE)
+                    .withQueueNameOrArn(TestCommon.DEFAULT_SQS_QUEUE);
+
+            runTest(testProperties);
+
+        } catch (Exception e) {
+            LOG.error("Amazon SQS test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    @Timeout(value = 120)
+    public void testBasicSendReceiveUsingUrl() {
+        try {
+            Properties amazonProperties = awsService.getConnectionProperties();
+
+            ConnectorPropertyFactory testProperties = CamelAWSSQSPropertyFactory
+                    .basic()
+                    .withName("CamelAwssqsSinkConnectorUsingUrl")
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withUrl(TestCommon.DEFAULT_SQS_QUEUE)
+                        .append("autoCreateQueue", "true")
+                        .append("accessKey", amazonProperties.getProperty(AWSConfigs.ACCESS_KEY))
+                        .append("secretKey", amazonProperties.getProperty(AWSConfigs.SECRET_KEY))
+                        .append("protocol", amazonProperties.getProperty(AWSConfigs.PROTOCOL))
+                        .append("region", amazonProperties.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()))
+                        .append("amazonAWSHost", amazonProperties.getProperty(AWSConfigs.AMAZON_AWS_HOST))
+                        .buildUrl();
+
+            runTest(testProperties);
+
+        } catch (Exception e) {
+            LOG.error("Amazon SQS test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
+
+
+
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelCassandraPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelCassandraPropertyFactory.java
index dadc09b..091b021 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelCassandraPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelCassandraPropertyFactory.java
@@ -17,42 +17,51 @@
 
 package org.apache.camel.kafkaconnector.sink.cassandra;
 
-import java.util.Properties;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+final class CamelCassandraPropertyFactory extends SinkConnectorPropertyFactory<CamelCassandraPropertyFactory> {
+    private CamelCassandraPropertyFactory() {
 
-public class CamelCassandraPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String host;
-    private final String keySpace;
-    private final String cql;
-
-    public CamelCassandraPropertyFactory(int tasksMax, String topic, String host, String keySpace, String cql) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.host = host;
-        this.keySpace = keySpace;
-        this.cql = cql;
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelCassandraQLSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    public CamelCassandraPropertyFactory withKeySpace(String keySpace) {
+        return setProperty("camel.sink.path.keyspace", keySpace);
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
+    public CamelCassandraPropertyFactory withCql(String cql) {
+        return setProperty("camel.sink.endpoint.cql", cql);
+    }
 
-        connectorProps.put("topics", topic);
+    public CamelCassandraPropertyFactory withHosts(String hosts) {
+        return setProperty("camel.sink.path.hosts", hosts);
+    }
 
-        String url = String.format("cql://%s/%s?cql=%s", host, keySpace, cql);
+    public CamelCassandraPropertyFactory withPort(int port) {
+        return withPort(Integer.toString(port));
+    }
 
-        connectorProps.put("camel.sink.url", url);
+    public CamelCassandraPropertyFactory withPort(String port) {
+        return setProperty("camel.sink.path.port", port);
+    }
 
-        return connectorProps;
+    public CamelCassandraPropertyFactory withCluster(String cluster) {
+        return setProperty("camel.sink.endpoint.cluster", cluster);
+    }
+
+    public EndpointUrlBuilder<CamelCassandraPropertyFactory> withUrl(String host, String keySpace) {
+        String queueUrl = String.format("cql://%s/%s", host, keySpace);
+
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
+    }
+
+
+    public static CamelCassandraPropertyFactory basic() {
+        return new CamelCassandraPropertyFactory()
+                .withName("CamelCqlSinkConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.cql.CamelCqlSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelSinkCassandraITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelSinkCassandraITCase.java
index 2478783..61e91c3 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelSinkCassandraITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/cassandra/CamelSinkCassandraITCase.java
@@ -32,6 +32,7 @@
 import org.apache.camel.kafkaconnector.services.cassandra.CassandraService;
 import org.apache.camel.kafkaconnector.services.cassandra.CassandraServiceFactory;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.slf4j.Logger;
@@ -89,16 +90,10 @@
         }
     }
 
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
 
-    @Test
-    public void testFetchFromCassandra() throws ExecutionException, InterruptedException {
-        String topic = TestCommon.getDefaultTestTopic(this.getClass());
-
-        ConnectorPropertyFactory testProperties = new CamelCassandraPropertyFactory(1, topic,
-                cassandraService.getCQL3Endpoint(), TestDataDao.KEY_SPACE,
-                testDataDao.getInsertStatement());
-
-        getKafkaConnectService().initializeConnector(testProperties);
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
 
         CountDownLatch latch = new CountDownLatch(1);
         ExecutorService service = Executors.newCachedThreadPool();
@@ -114,4 +109,36 @@
                 String.format("Did not receive as much data as expected: %d < %d", received, expect));
 
     }
+
+    @Disabled("Known issue")
+    @Test
+    public void testFetchFromCassandra() throws ExecutionException, InterruptedException {
+        String topic = TestCommon.getDefaultTestTopic(this.getClass());
+
+        ConnectorPropertyFactory connectorPropertyFactory = CamelCassandraPropertyFactory
+                .basic()
+                .withTopics(topic)
+                .withHosts(cassandraService.getCassandraHost())
+                .withPort(cassandraService.getCQL3Port())
+                .withKeySpace(TestDataDao.KEY_SPACE)
+                .withCql(testDataDao.getInsertStatement());
+
+        runTest(connectorPropertyFactory);
+    }
+
+
+    @Test
+    public void testFetchFromCassandraWithUrl() throws ExecutionException, InterruptedException {
+        String topic = TestCommon.getDefaultTestTopic(this.getClass());
+
+        ConnectorPropertyFactory connectorPropertyFactory = CamelCassandraPropertyFactory
+                .basic()
+                    .withTopics(topic)
+                    .withUrl(cassandraService.getCQL3Endpoint(), TestDataDao.KEY_SPACE)
+                    .append("cql", testDataDao.getInsertStatement())
+                    .buildUrl();
+
+        runTest(connectorPropertyFactory);
+
+    }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchIndexPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchIndexPropertyFactory.java
deleted file mode 100644
index 500a0bc..0000000
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchIndexPropertyFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.camel.kafkaconnector.sink.elasticsearch;
-
-import java.util.Properties;
-
-import org.apache.kafka.connect.runtime.ConnectorConfig;
-
-public class CamelElasticSearchIndexPropertyFactory extends CamelElasticSearchPropertyFactory {
-    private final String index;
-    private final String transformerKey;
-
-
-    CamelElasticSearchIndexPropertyFactory(int tasksMax, String topic, String clusterName, String hostAddress,
-                                           String index, String transformerKey) {
-        super(tasksMax, topic, clusterName, hostAddress, index);
-        this.index = index;
-        this.transformerKey = transformerKey;
-    }
-
-
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = super.getProperties();
-
-        connectorProps.put(ConnectorConfig.TRANSFORMS_CONFIG, "ElasticSearchTransformer");
-        connectorProps.put(ConnectorConfig.TRANSFORMS_CONFIG + ".ElasticSearchTransformer.type",
-                "org.apache.camel.kafkaconnector.sink.elasticsearch.transforms.ConnectRecordValueToMapTransformer");
-        connectorProps.put(ConnectorConfig.TRANSFORMS_CONFIG + ".ElasticSearchTransformer.key",
-                transformerKey);
-
-        String queueUrl = "elasticsearch-rest://" + getClusterName() + "?hostAddresses=" + getHostAddress()
-                + "&operation=Index"
-                + "&indexName=" + index;
-
-        connectorProps.put("camel.sink.url", queueUrl);
-
-
-        return connectorProps;
-    }
-}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchPropertyFactory.java
index b5bb19e..b8d6147 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelElasticSearchPropertyFactory.java
@@ -17,59 +17,44 @@
 
 package org.apache.camel.kafkaconnector.sink.elasticsearch;
 
-import java.util.Properties;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+final class CamelElasticSearchPropertyFactory extends SinkConnectorPropertyFactory<CamelElasticSearchPropertyFactory> {
 
-public class CamelElasticSearchPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String clusterName;
-    private final String hostAddress;
-    private final String index;
+    private CamelElasticSearchPropertyFactory() {
 
-
-    CamelElasticSearchPropertyFactory(int tasksMax, String topic, String clusterName, String hostAddress, String index) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.clusterName = clusterName;
-        this.hostAddress = hostAddress;
-        this.index = index;
     }
 
-    protected int getTasksMax() {
-        return tasksMax;
+    public CamelElasticSearchPropertyFactory withClusterName(String clusterName) {
+        return setProperty("camel.sink.path.clusterName", clusterName);
     }
 
-    protected String getTopic() {
-        return topic;
+    public CamelElasticSearchPropertyFactory withHostAddress(String hostAddress) {
+        return setProperty("camel.sink.endpoint.hostAddresses", hostAddress);
     }
 
-    protected String getClusterName() {
-        return clusterName;
+    public CamelElasticSearchPropertyFactory withIndexName(String indexName) {
+        return setProperty("camel.sink.endpoint.indexName", indexName);
     }
 
-    protected String getHostAddress() {
-        return hostAddress;
+    public CamelElasticSearchPropertyFactory withOperation(String operation) {
+        return setProperty("camel.sink.endpoint.operation", operation);
     }
 
-    protected String getIndex() {
-        return index;
+    public EndpointUrlBuilder<CamelElasticSearchPropertyFactory> withUrl(String clusterName) {
+        String queueUrl = String.format("elasticsearch-rest://%s", clusterName);
+
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelElasticSearchSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
-
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-
-        connectorProps.put("topics", topic);
-
-        return connectorProps;
+    public static CamelElasticSearchPropertyFactory basic() {
+        return new CamelElasticSearchPropertyFactory()
+                .withName("CamelElasticSearchSinkConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.elasticsearchrest.CamelElasticsearchrestSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
+
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelSinkElasticSearchITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelSinkElasticSearchITCase.java
index 4b3759b..520186e 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelSinkElasticSearchITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/CamelSinkElasticSearchITCase.java
@@ -24,6 +24,7 @@
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
+import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.TestCommon;
 import org.apache.camel.kafkaconnector.clients.elasticsearch.ElasticSearchClient;
 import org.apache.camel.kafkaconnector.clients.kafka.KafkaClient;
@@ -61,6 +62,7 @@
     @BeforeEach
     public void setUp() {
         client = elasticSearch.getClient();
+        received = 0;
     }
 
     private void putRecords(CountDownLatch latch) {
@@ -95,6 +97,34 @@
         received++;
     }
 
+    public void runTest(ConnectorPropertyFactory propertyFactory) throws ExecutionException, InterruptedException {
+        propertyFactory.log();
+        getKafkaConnectService().initializeConnector(propertyFactory);
+
+        CountDownLatch latch = new CountDownLatch(1);
+        ExecutorService service = Executors.newCachedThreadPool();
+        service.submit(() -> putRecords(latch));
+
+        if (!latch.await(30, TimeUnit.SECONDS)) {
+            fail("Timed out wait for data to be added to the Kafka cluster");
+        }
+
+        LOG.debug("Waiting for indices");
+
+        client.waitForIndex();
+
+        LOG.debug("Waiting for data");
+        client.waitForData(expect);
+
+        SearchHits hits = client.getData();
+
+        assertNotNull(hits);
+
+        hits.forEach(this::verifyHit);
+        assertEquals(expect, received, "Did not receive the same amount of messages sent");
+
+        LOG.debug("Created the consumer ... About to receive messages");
+    }
 
 
     @Test
@@ -102,34 +132,48 @@
     public void testIndexOperation() {
         try {
             String topic = TestCommon.getDefaultTestTopic(this.getClass());
-            CamelElasticSearchPropertyFactory testProperties = new CamelElasticSearchIndexPropertyFactory(1, topic,
-                    TestCommon.DEFAULT_ELASTICSEARCH_CLUSTER,
-                    elasticSearch.getHttpHostAddress(), TestCommon.DEFAULT_ELASTICSEARCH_INDEX, transformKey);
 
-            getKafkaConnectService().initializeConnector(testProperties);
+            ConnectorPropertyFactory propertyFactory = CamelElasticSearchPropertyFactory
+                    .basic()
+                    .withTopics(topic)
+                    .withOperation("Index")
+                    .withClusterName(TestCommon.DEFAULT_ELASTICSEARCH_CLUSTER)
+                    .withHostAddress(elasticSearch.getHttpHostAddress())
+                    .withIndexName(TestCommon.DEFAULT_ELASTICSEARCH_INDEX)
+                    .withTransformsConfig("ElasticSearchTransformer")
+                        .withEntry("type", "org.apache.camel.kafkaconnector.sink.elasticsearch.transforms.ConnectRecordValueToMapTransformer")
+                        .withEntry("key", transformKey)
+                        .end();
 
-            CountDownLatch latch = new CountDownLatch(1);
-            ExecutorService service = Executors.newCachedThreadPool();
-            service.submit(() -> putRecords(latch));
+            runTest(propertyFactory);
 
-            if (!latch.await(30, TimeUnit.SECONDS)) {
-                fail("Timed out wait for data to be added to the Kafka cluster");
-            }
+            LOG.debug("Created the consumer ... About to receive messages");
+        } catch (Exception e) {
+            LOG.error("ElasticSearch test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
 
-            LOG.debug("Waiting for indices");
+    @Test
+    @Timeout(90)
+    public void testIndexOperationUsingUrl() {
+        try {
+            String topic = TestCommon.getDefaultTestTopic(this.getClass());
 
-            client.waitForIndex();
+            ConnectorPropertyFactory propertyFactory = CamelElasticSearchPropertyFactory
+                    .basic()
+                    .withTopics(topic)
+                    .withUrl(TestCommon.DEFAULT_ELASTICSEARCH_CLUSTER)
+                        .append("hostAddresses", elasticSearch.getHttpHostAddress())
+                        .append("operation", "Index")
+                        .append("indexName", TestCommon.DEFAULT_ELASTICSEARCH_INDEX)
+                        .buildUrl()
+                    .withTransformsConfig("ElasticSearchTransformer")
+                        .withEntry("type", "org.apache.camel.kafkaconnector.sink.elasticsearch.transforms.ConnectRecordValueToMapTransformer")
+                        .withEntry("key", transformKey)
+                        .end();
 
-            LOG.debug("Waiting for data");
-            client.waitForData(expect);
-
-            SearchHits hits = client.getData();
-
-            assertNotNull(hits);
-
-            hits.forEach(this::verifyHit);
-            assertEquals(expect, received, "Did not receive the same amount of messages sent");
-
+            runTest(propertyFactory);
 
             LOG.debug("Created the consumer ... About to receive messages");
         } catch (Exception e) {
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/transforms/ConnectRecordValueToMapTransformer.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/transforms/ConnectRecordValueToMapTransformer.java
index 44ef5ac..37c3766 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/transforms/ConnectRecordValueToMapTransformer.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/elasticsearch/transforms/ConnectRecordValueToMapTransformer.java
@@ -44,7 +44,7 @@
 
         targetMap.put(key, value);
         return r.newRecord(r.topic(), r.kafkaPartition(), null, r.key(),
-                SchemaHelper.buildSchemaBuilderForType(value), targetMap, r.timestamp());
+                 SchemaHelper.buildSchemaBuilderForType(value), targetMap, r.timestamp());
     }
 
     @Override
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelFilePropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelFilePropertyFactory.java
index b35e013..e0150c0 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelFilePropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelFilePropertyFactory.java
@@ -17,35 +17,39 @@
 
 package org.apache.camel.kafkaconnector.sink.file;
 
-import java.util.Properties;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+final class CamelFilePropertyFactory extends SinkConnectorPropertyFactory<CamelFilePropertyFactory> {
+    private CamelFilePropertyFactory() {
 
-class CamelFilePropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String url;
-
-    CamelFilePropertyFactory(int tasksMax, String topic, String url) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.url = url;
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelFileSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    public CamelFilePropertyFactory withFileName(String fileName) {
+        return setProperty("camel.sink.endpoint.fileName", fileName);
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
+    public CamelFilePropertyFactory withDoneFileName(String doneFileName) {
+        return setProperty("camel.sink.endpoint.doneFileName", doneFileName);
+    }
 
-        connectorProps.put("camel.sink.url", url);
-        connectorProps.put("topics", topic);
+    public CamelFilePropertyFactory withDirectoryName(String directoryName) {
+        return setProperty("camel.sink.path.directoryName", directoryName);
+    }
 
-        return connectorProps;
+    public EndpointUrlBuilder<CamelFilePropertyFactory> withUrl(String fileOrDirName) {
+        String queueUrl = String.format("file://%s", fileOrDirName);
+
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
+    }
+
+    public static CamelFilePropertyFactory basic() {
+        return new CamelFilePropertyFactory()
+                .withTasksMax(1)
+                .withName("CamelFileSinkConnector")
+                .withConnectorClass("org.apache.camel.kafkaconnector.file.CamelFileSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
+
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelSinkFileITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelSinkFileITCase.java
index c711938..eba4fb4 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelSinkFileITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/file/CamelSinkFileITCase.java
@@ -34,6 +34,7 @@
 import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.TestCommon;
 import org.apache.camel.kafkaconnector.clients.kafka.KafkaClient;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
@@ -58,6 +59,15 @@
 
     @BeforeEach
     public void setUp() {
+        cleanup();
+    }
+
+    @AfterEach
+    public void tearDown() {
+        cleanup();
+    }
+
+    private void cleanup() {
         File doneFile = new File(SINK_DIR, FILENAME + ".done");
         if (doneFile.exists()) {
             doneFile.delete();
@@ -76,6 +86,24 @@
                 break;
             }
         }
+    }
+
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException, IOException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
+
+        putRecords();
+
+        LOG.debug("Created the consumer ... About to receive messages");
+
+        File sinkFile = new File(SINK_DIR, FILENAME);
+        File doneFile = new File(SINK_DIR, FILENAME + ".done");
+
+        waitForFile(sinkFile, doneFile);
+
+        assertTrue(sinkFile.exists(), String.format("The file %s does not exist", sinkFile.getPath()));
+
+        checkFileContents(sinkFile);
 
     }
 
@@ -83,26 +111,33 @@
     @Timeout(90)
     public void testBasicSendReceive() {
         try {
-            String url = "file://" + SINK_DIR + "?fileName=" + FILENAME + "&doneFileName=${file:name}.done";
-            LOG.debug("Saving files to {}", url);
+            ConnectorPropertyFactory connectorPropertyFactory = CamelFilePropertyFactory.basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withDirectoryName(SINK_DIR)
+                    .withFileName(FILENAME)
+                    .withDoneFileName("${file:name}.done");
 
-            ConnectorPropertyFactory testProperties = new CamelFilePropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()), url);
+            runTest(connectorPropertyFactory);
 
-            getKafkaConnectService().initializeConnector(testProperties);
+        } catch (Exception e) {
+            LOG.error("HTTP test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
 
-            putRecords();
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveUsingUrl() {
+        try {
+            ConnectorPropertyFactory connectorPropertyFactory = CamelFilePropertyFactory.basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withUrl(SINK_DIR)
+                        .append("fileName", FILENAME)
+                        .append("doneFileName", "${file:name}.done")
+                        .buildUrl();
 
-            LOG.debug("Created the consumer ... About to receive messages");
 
-            File sinkFile = new File(SINK_DIR, FILENAME);
-            File doneFile = new File(SINK_DIR, FILENAME + ".done");
-
-            waitForFile(sinkFile, doneFile);
-
-            assertTrue(sinkFile.exists(), String.format("The file %s does not exist", sinkFile.getPath()));
-
-            checkFileContents(sinkFile);
+            runTest(connectorPropertyFactory);
 
         } catch (Exception e) {
             LOG.error("HTTP test failed: {}", e.getMessage(), e);
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelHTTPPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelHTTPPropertyFactory.java
index 883d499..0a1f22f 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelHTTPPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelHTTPPropertyFactory.java
@@ -17,35 +17,30 @@
 
 package org.apache.camel.kafkaconnector.sink.http;
 
-import java.util.Properties;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+final class CamelHTTPPropertyFactory extends SinkConnectorPropertyFactory<CamelHTTPPropertyFactory> {
+    private CamelHTTPPropertyFactory() {
 
-class CamelHTTPPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String url;
-
-    CamelHTTPPropertyFactory(int tasksMax, String topic, String url) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.url = url;
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelHttpSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    public CamelHTTPPropertyFactory withHttpUri(String uri) {
+        return setProperty("camel.sink.path.httpUri", uri);
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
+    public EndpointUrlBuilder<CamelHTTPPropertyFactory> withUrl(String hostname) {
+        String url = String.format("http://%s", hostname);
 
-        connectorProps.put("camel.sink.url", url);
-        connectorProps.put("topics", topic);
+        return new EndpointUrlBuilder<>(this::withSinkUrl, url);
+    }
 
-        return connectorProps;
+    public static CamelHTTPPropertyFactory basic() {
+        return new CamelHTTPPropertyFactory()
+                .withTasksMax(1)
+                .withName("CamelHttpSinkConnector")
+                .withConnectorClass("org.apache.camel.kafkaconnector.http.CamelHttpSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelSinkHTTPITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelSinkHTTPITCase.java
index afba677..b77904d 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelSinkHTTPITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/http/CamelSinkHTTPITCase.java
@@ -23,6 +23,7 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
 import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
@@ -65,7 +66,11 @@
 
     @AfterEach
     public void tearDown() {
-        localServer.stop();
+        try {
+            localServer.stop();
+        } finally {
+            localServer.shutdown(2, TimeUnit.SECONDS);
+        }
     }
 
 
@@ -83,31 +88,58 @@
         }
     }
 
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException, TimeoutException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
+
+        ExecutorService service = Executors.newCachedThreadPool();
+        service.submit(this::putRecords);
+
+        LOG.debug("Created the consumer ... About to receive messages");
+
+        List<String> replies = validationHandler.getReplies().get(30, TimeUnit.SECONDS);
+        if (replies == null) {
+            fail("Some messages should have been exchanged, but none seems to have gone through");
+        }
+
+        for (String reply : replies) {
+            LOG.debug("Received: {} ", reply);
+        }
+
+        assertEquals(replies.size(), expect, "Did not receive the same amount of messages that were sent");
+
+    }
+
     @Test
     @Timeout(90)
     public void testBasicSendReceive() {
         try {
-            String url = "http://localhost:" + HTTP_PORT + "/ckc";
-            ConnectorPropertyFactory testProperties = new CamelHTTPPropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()), url);
+            String url = "localhost:" + HTTP_PORT + "/ckc";
 
-            getKafkaConnectService().initializeConnector(testProperties);
+            ConnectorPropertyFactory connectorPropertyFactory = CamelHTTPPropertyFactory.basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withHttpUri(url);
 
-            ExecutorService service = Executors.newCachedThreadPool();
-            service.submit(this::putRecords);
+            runTest(connectorPropertyFactory);
+        } catch (Exception e) {
+            LOG.error("HTTP test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
 
-            LOG.debug("Created the consumer ... About to receive messages");
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveUsingUrl() {
+        try {
+            String hostName = "localhost:" + HTTP_PORT + "/ckc";
 
-            List<String> replies = validationHandler.getReplies().get(30, TimeUnit.SECONDS);
-            if (replies == null) {
-                fail("Some messages should have been exchanged, but none seems to have gone through");
-            }
+            ConnectorPropertyFactory connectorPropertyFactory = CamelHTTPPropertyFactory.basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withUrl(hostName)
+                        .buildUrl();
 
-            for (String reply : replies) {
-                LOG.debug("Received: {} ", reply);
-            }
 
-            assertEquals(replies.size(), expect, "Did not receive the same amount of messages that were sent");
+            runTest(connectorPropertyFactory);
         } catch (Exception e) {
             LOG.error("HTTP test failed: {}", e.getMessage(), e);
             fail(e.getMessage());
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelJMSPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelJMSPropertyFactory.java
index b22233a..e2ce13a 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelJMSPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelJMSPropertyFactory.java
@@ -17,48 +17,40 @@
 
 package org.apache.camel.kafkaconnector.sink.jms;
 
-import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
-import java.util.stream.Collectors;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.camel.kafkaconnector.sjms2.CamelSjms2SinkConnectorConfig;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
 
 
 /**
  * Creates the set of properties used by a Camel JMS Sink Connector
  */
-class CamelJMSPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String queue;
+final class CamelJMSPropertyFactory extends SinkConnectorPropertyFactory<CamelJMSPropertyFactory> {
+    private CamelJMSPropertyFactory() {
 
-    private final Properties connectionProperties;
-
-    CamelJMSPropertyFactory(int tasksMax, String topic, String queue, Properties connectionProperties) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.queue = queue;
-        this.connectionProperties = connectionProperties;
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelJmsSinkConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    public CamelJMSPropertyFactory withDestinationName(String destinationName) {
+        return setProperty("camel.sink.path.destinationName", destinationName);
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.sjms2.CamelSjms2SinkConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(CamelSjms2SinkConnectorConfig.CAMEL_SINK_SJMS2_PATH_DESTINATION_NAME_CONF, queue);
-        connectorProps.put("topics", topic);
+    public CamelJMSPropertyFactory withConnectionProperties(Properties connectionProperties) {
+        return merge(connectionProperties);
+    }
 
-        Set<Map.Entry<Object, Object>> set = connectionProperties.entrySet();
-        connectorProps.putAll(set.stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b)->b)));
+    public EndpointUrlBuilder<CamelJMSPropertyFactory> withUrl(String destinationName) {
+        String queueUrl = String.format("sjms2://%s", destinationName);
 
-        return connectorProps;
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
+    }
+
+    public static CamelJMSPropertyFactory basic() {
+        return new CamelJMSPropertyFactory()
+                .withName("CamelJmsSinkConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.sjms2.CamelSjms2SinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelSinkJMSITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelSinkJMSITCase.java
index 15e8ae4..970ab10 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelSinkJMSITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/jms/CamelSinkJMSITCase.java
@@ -17,8 +17,8 @@
 
 package org.apache.camel.kafkaconnector.sink.jms;
 
-import java.util.Properties;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -42,12 +42,11 @@
 import org.slf4j.LoggerFactory;
 import org.testcontainers.junit.jupiter.Testcontainers;
 
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
- * A simple test case that checks whether the timer produces the expected number of
- * messages
+ * Integration tests for the JMS sink
  */
 @Testcontainers
 public class CamelSinkJMSITCase extends AbstractKafkaTest {
@@ -62,6 +61,7 @@
     @BeforeEach
     public void setUp() {
         LOG.info("JMS service running at {}", jmsService.getDefaultEndpoint());
+        received = 0;
     }
 
     private boolean checkRecord(Message jmsMessage) {
@@ -85,43 +85,67 @@
         return false;
     }
 
+    private void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
+
+        CountDownLatch latch = new CountDownLatch(1);
+
+        ExecutorService service = Executors.newCachedThreadPool();
+
+        LOG.debug("Creating the consumer ...");
+        service.submit(() -> consumeJMSMessages(latch));
+
+        KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
+
+        for (int i = 0; i < expect; i++) {
+            kafkaClient.produce(TestCommon.getDefaultTestTopic(this.getClass()), "Sink test message " + i);
+        }
+
+        LOG.debug("Created the consumer ... About to receive messages");
+
+        if (latch.await(35, TimeUnit.SECONDS)) {
+            assertEquals(received, expect, "Didn't process the expected amount of messages: " + received + " != " + expect);
+        } else {
+            fail("Failed to receive the messages within the specified time");
+        }
+    }
+
     @Test
     @Timeout(90)
     public void testBasicSendReceive() {
         try {
-            Properties connectionProperties = jmsService.getConnectionProperties();
+            ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory
+                    .basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withConnectionProperties(jmsService.getConnectionProperties())
+                    .withDestinationName(TestCommon.DEFAULT_JMS_QUEUE);
 
-            ConnectorPropertyFactory testProperties = new CamelJMSPropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()),
-                    TestCommon.DEFAULT_JMS_QUEUE, connectionProperties);
+            runTest(connectorPropertyFactory);
 
-            getKafkaConnectService().initializeConnector(testProperties);
-
-            CountDownLatch latch = new CountDownLatch(1);
-
-            ExecutorService service = Executors.newCachedThreadPool();
-
-            LOG.debug("Creating the consumer ...");
-            service.submit(() -> consumeJMSMessages(latch));
-
-            KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
-
-            for (int i = 0; i < expect; i++) {
-                kafkaClient.produce(TestCommon.getDefaultTestTopic(this.getClass()), "Sink test message " + i);
-            }
-
-            LOG.debug("Created the consumer ... About to receive messages");
-
-            if (latch.await(35, TimeUnit.SECONDS)) {
-                assertEquals(received, expect, "Didn't process the expected amount of messages: " + received + " != " + expect);
-            } else {
-                fail("Failed to receive the messages within the specified time");
-            }
         } catch (Exception e) {
             LOG.error("JMS test failed: {}", e.getMessage(), e);
             fail(e.getMessage());
         }
+    }
 
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveUsingUrl() {
+        try {
+            ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory
+                    .basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withConnectionProperties(jmsService.getConnectionProperties())
+                        .withUrl(TestCommon.DEFAULT_JMS_QUEUE)
+                        .buildUrl();
+
+            runTest(connectorPropertyFactory);
+
+        } catch (Exception e) {
+            LOG.error("JMS test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
     }
 
     private void consumeJMSMessages(CountDownLatch latch) {
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/slack/CamelSinkSlackITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/slack/CamelSinkSlackITCase.java
new file mode 100644
index 0000000..7193e4c
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/slack/CamelSinkSlackITCase.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector.sink.slack;
+
+import java.util.concurrent.ExecutionException;
+
+import org.apache.camel.kafkaconnector.AbstractKafkaTest;
+import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
+import org.apache.camel.kafkaconnector.TestCommon;
+import org.apache.camel.kafkaconnector.clients.kafka.KafkaClient;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+/**
+ * Integration tests for the JMS sink
+ */
+@Testcontainers
+/* This test is disabled by default because requires manual verification on Slack end.
+
+You need to set 3 system properties to run this test:
+ -Dit.test.slack.enable=true to enable the test
+ -Dit.test.slack.channel=#channel to inform the channel to send the message to
+ -Dit.test.slack.webhookUrl=https://host.slack.com/id/of/the/hook to pass the incoming hook URL to the test
+ */
+@EnabledIfSystemProperty(named = "it.test.slack.enable", matches = "true")
+public class CamelSinkSlackITCase extends AbstractKafkaTest {
+    private static final Logger LOG = LoggerFactory.getLogger(CamelSinkSlackITCase.class);
+    private String slackChannel = System.getProperty("it.test.slack.channel");
+    private String webhookUrl = System.getProperty("it.test.slack.webhookUrl");
+
+
+    private void runTest(ConnectorPropertyFactory connectorPropertyFactory, String message) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
+
+        KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
+
+        kafkaClient.produce(TestCommon.getDefaultTestTopic(this.getClass()), message);
+
+
+        LOG.debug("Created the consumer ... About to receive messages");
+    }
+
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceive() {
+        try {
+            ConnectorPropertyFactory connectorPropertyFactory = CamelSlackPropertyFactory
+                    .basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withChannel(slackChannel)
+                    .withWebhookUrl(webhookUrl);
+
+            runTest(connectorPropertyFactory, "Sink test message sent to Slack from testBasicSendReceive");
+
+        } catch (Exception e) {
+            LOG.error("Slack test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
+
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveWithUrl() {
+        try {
+            ConnectorPropertyFactory connectorPropertyFactory = CamelSlackPropertyFactory
+                    .basic()
+                    .withTopics(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withUrl(slackChannel)
+                        .append("webhookUrl", webhookUrl)
+                        .buildUrl();
+
+            runTest(connectorPropertyFactory, "Sink test message sent to Slack from testBasicSendReceiveWithUrl");
+
+        } catch (Exception e) {
+            LOG.error("Slack test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
+
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/sink/slack/CamelSlackPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/slack/CamelSlackPropertyFactory.java
new file mode 100644
index 0000000..513461f
--- /dev/null
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/sink/slack/CamelSlackPropertyFactory.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.kafkaconnector.sink.slack;
+
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SinkConnectorPropertyFactory;
+
+
+/**
+ * Creates the set of properties used by a Camel Slack Sink Connector
+ */
+final class CamelSlackPropertyFactory extends SinkConnectorPropertyFactory<CamelSlackPropertyFactory> {
+    private CamelSlackPropertyFactory() {
+
+    }
+
+    public CamelSlackPropertyFactory withChannel(String channel) {
+        return setProperty("camel.sink.path.channel", channel);
+    }
+
+    public CamelSlackPropertyFactory withWebhookUrl(String webhookUrl) {
+        return setProperty("camel.sink.endpoint.webhookUrl", webhookUrl);
+    }
+
+    public EndpointUrlBuilder<CamelSlackPropertyFactory> withUrl(String channel) {
+        String queueUrl = String.format("slack:%s", channel);
+
+        return new EndpointUrlBuilder<>(this::withSinkUrl, queueUrl);
+    }
+
+    public static CamelSlackPropertyFactory basic() {
+        return new CamelSlackPropertyFactory()
+                .withName("CamelSlackSinkConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.slack.CamelSlackSinkConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
+    }
+}
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelAWSKinesisPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelAWSKinesisPropertyFactory.java
index bea1d09..f4f8745 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelAWSKinesisPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelAWSKinesisPropertyFactory.java
@@ -17,56 +17,74 @@
 
 package org.apache.camel.kafkaconnector.source.aws.kinesis;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
+import com.amazonaws.regions.Regions;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SourceConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.clients.aws.AWSConfigs;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
-
 
 /**
- * Creates the set of properties used by a Camel JMS Sink Connector
+ * Creates the set of properties used by a Camel Kinesis Source Connector
  */
-class CamelAWSKinesisPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String streamName;
-    private final Properties amazonConfigs;
+final class CamelAWSKinesisPropertyFactory extends SourceConnectorPropertyFactory<CamelAWSKinesisPropertyFactory> {
+    public static final Map<String, String> SPRING_STYLE = new HashMap<>();
+    public static final Map<String, String> KAFKA_STYLE = new HashMap<>();
 
+    static {
+        SPRING_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-kinesis.accessKey");
+        SPRING_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-kinesis.secretKey");
+        SPRING_STYLE.put(AWSConfigs.REGION, "camel.component.aws-kinesis.region");
 
-    CamelAWSKinesisPropertyFactory(int tasksMax, String topic, String streamName, Properties amazonConfigs) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.streamName = streamName;
-        this.amazonConfigs = amazonConfigs;
+        KAFKA_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-kinesis.access-key");
+        KAFKA_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-kinesis.secret-key");
+        KAFKA_STYLE.put(AWSConfigs.REGION, "camel.component.aws-kinesis.region");
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelAWSKinesisSourceConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    private CamelAWSKinesisPropertyFactory() {
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSourceConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
+    }
 
-        connectorProps.put("camel.source.kafka.topic", topic);
+    public CamelAWSKinesisPropertyFactory withAmazonConfig(Properties amazonConfigs) {
+        return withAmazonConfig(amazonConfigs, this.SPRING_STYLE);
+    }
 
-        String sourceUrl = "aws-kinesis://" + streamName;
-        connectorProps.put("camel.source.url", sourceUrl);
+    public CamelAWSKinesisPropertyFactory withAmazonConfig(Properties amazonConfigs, Map<String, String> style) {
+        String accessKeyKey = style.get(AWSConfigs.ACCESS_KEY);
+        String secretKeyKey = style.get(AWSConfigs.SECRET_KEY);
+        String regionKey = style.get(AWSConfigs.REGION);
 
-
-        connectorProps.put("camel.component.aws-kinesis.configuration.access-key",
+        setProperty(accessKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, ""));
-        connectorProps.put("camel.component.aws-kinesis.configuration.secret-key",
+        setProperty(secretKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, ""));
-        connectorProps.put("camel.component.aws-kinesis.configuration.region",
-                amazonConfigs.getProperty(AWSConfigs.REGION, ""));
+        return setProperty(regionKey,
+                amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()));
+    }
 
-        connectorProps.put("camel.component.aws-kinesis.configuration", "#class:"
-                + TestKinesisConfiguration.class.getName());
+    public CamelAWSKinesisPropertyFactory withStreamName(String streamName) {
+        return setProperty("camel.source.path.streamName", streamName);
+    }
 
-        return connectorProps;
+    public EndpointUrlBuilder<CamelAWSKinesisPropertyFactory> withUrl(String streamName) {
+        String sourceUrl = String.format("aws-kinesis://%s", streamName);
+
+        return new EndpointUrlBuilder<>(this::withSourceUrl, sourceUrl);
+    }
+
+    public CamelAWSKinesisPropertyFactory withConfiguration(String configurationClass) {
+        return setProperty("camel.component.aws-kinesis.configuration",
+                classRef(configurationClass));
+    }
+
+    public static CamelAWSKinesisPropertyFactory basic() {
+        return new CamelAWSKinesisPropertyFactory()
+                .withName("CamelAwskinesisSourceConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.awskinesis.CamelAwskinesisSourceConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelSourceAWSKinesisITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelSourceAWSKinesisITCase.java
index 2cd85cb..11b01c4 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelSourceAWSKinesisITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/kinesis/CamelSourceAWSKinesisITCase.java
@@ -20,13 +20,13 @@
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 
 import com.amazonaws.AmazonServiceException;
 import com.amazonaws.services.kinesis.AmazonKinesis;
 import com.amazonaws.services.kinesis.model.CreateStreamResult;
+import com.amazonaws.services.kinesis.model.DeleteStreamResult;
 import com.amazonaws.services.kinesis.model.PutRecordsRequest;
 import com.amazonaws.services.kinesis.model.PutRecordsRequestEntry;
 import com.amazonaws.services.kinesis.model.PutRecordsResult;
@@ -37,6 +37,7 @@
 import org.apache.camel.kafkaconnector.services.aws.AWSService;
 import org.apache.camel.kafkaconnector.services.aws.AWSServiceFactory;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
@@ -45,7 +46,7 @@
 import org.slf4j.LoggerFactory;
 import org.testcontainers.junit.jupiter.Testcontainers;
 
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 @Testcontainers
@@ -64,6 +65,36 @@
     @BeforeEach
     public void setUp() {
         awsKinesisClient = service.getClient();
+        received = 0;
+
+        CreateStreamResult result = awsKinesisClient.createStream(TestCommon.DEFAULT_KINESIS_STREAM, 1);
+        if (result.getSdkHttpMetadata().getHttpStatusCode() != 200) {
+            fail("Failed to create the stream");
+        } else {
+            LOG.info("Stream created successfully");
+        }
+    }
+
+    @AfterEach
+    public void tearDown() {
+        DeleteStreamResult result = awsKinesisClient.deleteStream(TestCommon.DEFAULT_KINESIS_STREAM);
+
+        if (result.getSdkHttpMetadata().getHttpStatusCode() != 200) {
+            fail("Failed to delete the stream");
+        } else {
+            try {
+                // Because of the latency used to simulate the Kinesis API call (defined by the KINESIS_LATENCY) in
+                // the LocalStack configuration, the test needs to wait at least the same amount of time as set there
+                // in order to proceed. Otherwise the it fails to create the stream in the setUp phase.
+                // Ref.: https://github.com/localstack/localstack/issues/231#issuecomment-319959693
+                Thread.sleep(500);
+                LOG.info("Stream deleted successfully");
+            } catch (InterruptedException e) {
+                fail("Test interrupted while waiting for the stream to cool down");
+            }
+        }
+
+        awsKinesisClient.shutdown();
     }
 
     private boolean checkRecord(ConsumerRecord<String, String> record) {
@@ -77,15 +108,9 @@
         return true;
     }
 
-    @Test
-    @Timeout(120)
-    public void testBasicSendReceive() throws ExecutionException, InterruptedException {
-        Properties properties = service.getConnectionProperties();
-
-        ConnectorPropertyFactory testProperties = new CamelAWSKinesisPropertyFactory(1,
-                TestCommon.getDefaultTestTopic(this.getClass()), TestCommon.DEFAULT_KINESIS_STREAM, properties);
-
-        getKafkaConnectService().initializeConnectorBlocking(testProperties);
+    public void runtTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnectorBlocking(connectorPropertyFactory);
 
         putRecords();
         LOG.debug("Initialized the connector and put the data for the test execution");
@@ -98,14 +123,47 @@
         assertEquals(received, expect, "Didn't process the expected amount of messages");
     }
 
-    private void putRecords() {
-        CreateStreamResult result = awsKinesisClient.createStream(TestCommon.DEFAULT_KINESIS_STREAM, 1);
-        if (result.getSdkHttpMetadata().getHttpStatusCode() != 200) {
-            fail("Failed to create the stream");
-        } else {
-            LOG.info("Stream created successfully");
-        }
+    @Test
+    @Timeout(120)
+    public void testBasicSendReceive() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSKinesisPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withAmazonConfig(service.getConnectionProperties())
+                .withConfiguration(TestKinesisConfiguration.class.getName())
+                .withStreamName(TestCommon.DEFAULT_KINESIS_STREAM);
 
+        runtTest(connectorPropertyFactory);
+    }
+
+    @Test
+    @Timeout(120)
+    public void testBasicSendReceiveWithKafkaStyle() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSKinesisPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withAmazonConfig(service.getConnectionProperties(), CamelAWSKinesisPropertyFactory.KAFKA_STYLE)
+                .withConfiguration(TestKinesisConfiguration.class.getName())
+                .withStreamName(TestCommon.DEFAULT_KINESIS_STREAM);
+
+        runtTest(connectorPropertyFactory);
+    }
+
+    @Test
+    @Timeout(120)
+    public void testBasicSendReceiveUsingUrl() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSKinesisPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withAmazonConfig(service.getConnectionProperties())
+                .withConfiguration(TestKinesisConfiguration.class.getName())
+                .withUrl(TestCommon.DEFAULT_KINESIS_STREAM)
+                    .buildUrl();
+
+        runtTest(connectorPropertyFactory);
+    }
+
+    private void putRecords() {
         PutRecordsRequest putRecordsRequest = new PutRecordsRequest();
         putRecordsRequest.setStreamName(TestCommon.DEFAULT_KINESIS_STREAM);
 
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelAWSS3PropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelAWSS3PropertyFactory.java
index c1ecc67..a56fe5e 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelAWSS3PropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelAWSS3PropertyFactory.java
@@ -17,55 +17,78 @@
 
 package org.apache.camel.kafkaconnector.source.aws.s3;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
+import com.amazonaws.regions.Regions;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SourceConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.clients.aws.AWSConfigs;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
 
 
 /**
  * Creates the set of properties used by a Camel JMS Sink Connector
  */
-class CamelAWSS3PropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String bucket;
-    private final Properties amazonConfigs;
+final class CamelAWSS3PropertyFactory extends SourceConnectorPropertyFactory<CamelAWSS3PropertyFactory> {
+    public static final Map<String, String> SPRING_STYLE = new HashMap<>();
+    public static final Map<String, String> KAFKA_STYLE = new HashMap<>();
 
+    static {
+        SPRING_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-s3.accessKey");
+        SPRING_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-s3.secretKey");
+        SPRING_STYLE.put(AWSConfigs.REGION, "camel.component.aws-s3.region");
 
-    CamelAWSS3PropertyFactory(int tasksMax, String topic, String bucket, Properties amazonConfigs) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.bucket = bucket;
-        this.amazonConfigs = amazonConfigs;
+        KAFKA_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-s3.access-key");
+        KAFKA_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-s3.secret-key");
+        KAFKA_STYLE.put(AWSConfigs.REGION, "camel.component.aws-s3.region");
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelAWSS3SSourceConnector");
+    private CamelAWSS3PropertyFactory() {
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSourceConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.camel.kafkaconnector.converters.S3ObjectConverter");
+    }
 
-        connectorProps.put("camel.source.kafka.topic", topic);
+    public CamelAWSS3PropertyFactory withAmazonConfig(Properties amazonConfigs) {
+        return withAmazonConfig(amazonConfigs, this.SPRING_STYLE);
+    }
 
-        String queueUrl = "aws-s3://" + bucket + "?maxMessagesPerPoll=10";
-        connectorProps.put("camel.source.url", queueUrl);
+    public CamelAWSS3PropertyFactory withAmazonConfig(Properties amazonConfigs, Map<String, String> style) {
+        String accessKeyKey = style.get(AWSConfigs.ACCESS_KEY);
+        String secretKeyKey = style.get(AWSConfigs.SECRET_KEY);
+        String regionKey = style.get(AWSConfigs.REGION);
 
-
-        connectorProps.put("camel.component.aws-s3.configuration.access-key",
+        setProperty(accessKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, ""));
-        connectorProps.put("camel.component.aws-s3.configuration.secret-key",
+        setProperty(secretKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, ""));
-        connectorProps.put("camel.component.aws-s3.configuration.region",
-                amazonConfigs.getProperty(AWSConfigs.REGION, ""));
+        return setProperty(regionKey,
+                amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()));
+    }
 
-        connectorProps.put("camel.component.aws-s3.configuration", "#class:"
-                + TestS3Configuration.class.getName());
+    public EndpointUrlBuilder<CamelAWSS3PropertyFactory> withUrl(String bucket) {
+        String queueUrl = String.format("aws-s3://%s", bucket);
 
-        return connectorProps;
+        return new EndpointUrlBuilder<>(this::withSourceUrl, queueUrl);
+    }
+
+    public CamelAWSS3PropertyFactory withMaxMessagesPerPoll(int value) {
+        return setProperty("camel.source.endpoint.maxMessagesPerPoll", Integer.toString(value));
+    }
+
+    public CamelAWSS3PropertyFactory withBucketNameOrArn(String bucketNameOrArn) {
+        return setProperty("camel.source.path.bucketNameOrArn", bucketNameOrArn);
+    }
+
+    public CamelAWSS3PropertyFactory withConfiguration(String configurationClass) {
+        return setProperty("camel.component.aws-s3.configuration", classRef(configurationClass));
+    }
+
+    public static CamelAWSS3PropertyFactory basic() {
+        return new CamelAWSS3PropertyFactory()
+                .withName("CamelAwss3SourceConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.awss3.CamelAwss3SourceConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelSourceAWSS3ITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelSourceAWSS3ITCase.java
index afdaee5..2ca219f 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelSourceAWSS3ITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/s3/CamelSourceAWSS3ITCase.java
@@ -21,14 +21,17 @@
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
 
+import com.amazonaws.regions.Regions;
 import com.amazonaws.services.s3.AmazonS3;
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
 import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.TestCommon;
+import org.apache.camel.kafkaconnector.clients.aws.AWSConfigs;
 import org.apache.camel.kafkaconnector.clients.kafka.KafkaClient;
 import org.apache.camel.kafkaconnector.services.aws.AWSService;
 import org.apache.camel.kafkaconnector.services.aws.AWSServiceFactory;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
@@ -38,6 +41,7 @@
 import org.testcontainers.junit.jupiter.Testcontainers;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
 
 @Testcontainers
 public class CamelSourceAWSS3ITCase extends AbstractKafkaTest {
@@ -54,6 +58,24 @@
     @BeforeEach
     public void setUp() {
         awsS3Client = service.getClient();
+        received = 0;
+
+        try {
+            awsS3Client.createBucket(TestCommon.DEFAULT_S3_BUCKET);
+        } catch (Exception e) {
+            LOG.error("Unable to create bucket: {}", e.getMessage(), e);
+            fail("Unable to create bucket");
+        }
+    }
+
+
+    @AfterEach
+    public void tearDown() {
+        try {
+            awsS3Client.deleteBucket(TestCommon.DEFAULT_S3_BUCKET);
+        } catch (Exception e) {
+            LOG.warn("Unable to delete bucked: {}", e.getMessage(), e);
+        }
     }
 
     private boolean checkRecord(ConsumerRecord<String, String> record) {
@@ -67,24 +89,16 @@
         return true;
     }
 
-    @Test
-    @Timeout(180)
-    public void testBasicSendReceive() throws ExecutionException, InterruptedException {
-        Properties properties = service.getConnectionProperties();
-
-        ConnectorPropertyFactory testProperties = new CamelAWSS3PropertyFactory(1,
-                TestCommon.getDefaultTestTopic(this.getClass()), TestCommon.DEFAULT_S3_BUCKET, properties);
-
-        getKafkaConnectService().initializeConnector(testProperties);
-
-        awsS3Client.createBucket(TestCommon.DEFAULT_S3_BUCKET);
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
 
         LOG.debug("Putting S3 objects");
         for (int i = 0; i < expect; i++) {
             String name = "file" + i + ".test";
             String file = this.getClass().getResource(name).getFile();
 
-            LOG.trace("Putting file " + file);
+            LOG.trace("Putting file {}", file);
             awsS3Client.putObject(TestCommon.DEFAULT_S3_BUCKET, name, new File(file));
         }
         LOG.debug("Done putting S3S objects");
@@ -96,4 +110,64 @@
 
         assertEquals(received, expect, "Didn't process the expected amount of messages");
     }
+
+    @Test
+    @Timeout(180)
+    public void testBasicSendReceive() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSS3PropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withConfiguration(TestS3Configuration.class.getName())
+                .withBucketNameOrArn(TestCommon.DEFAULT_S3_BUCKET)
+                .withAmazonConfig(service.getConnectionProperties());
+
+        runTest(connectorPropertyFactory);
+    }
+
+    @Test
+    @Timeout(180)
+    public void testBasicSendReceiveWithMaxMessagesPerPoll() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSS3PropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withConfiguration(TestS3Configuration.class.getName())
+                .withMaxMessagesPerPoll(5)
+                .withBucketNameOrArn(TestCommon.DEFAULT_S3_BUCKET)
+                .withAmazonConfig(service.getConnectionProperties());
+
+        runTest(connectorPropertyFactory);
+    }
+
+    @Test
+    @Timeout(180)
+    public void testBasicSendReceiveWithKafkaStyle() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSS3PropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withConfiguration(TestS3Configuration.class.getName())
+                .withBucketNameOrArn(TestCommon.DEFAULT_S3_BUCKET)
+                .withAmazonConfig(service.getConnectionProperties(), CamelAWSS3PropertyFactory.KAFKA_STYLE);
+
+        runTest(connectorPropertyFactory);
+    }
+
+
+    @Test
+    @Timeout(180)
+    public void testBasicSendReceiveUsingUrl() throws ExecutionException, InterruptedException {
+        Properties amazonProperties = service.getConnectionProperties();
+
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSS3PropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withUrl(TestCommon.DEFAULT_S3_BUCKET)
+                    .append("configuration", "#class:" + TestS3Configuration.class.getName())
+                    .append("accessKey", amazonProperties.getProperty(AWSConfigs.ACCESS_KEY))
+                    .append("secretKey", amazonProperties.getProperty(AWSConfigs.SECRET_KEY))
+                    .append("protocol", amazonProperties.getProperty(AWSConfigs.PROTOCOL))
+                    .append("region", amazonProperties.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()))
+                    .buildUrl();
+
+        runTest(connectorPropertyFactory);
+    }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelAWSSQSPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelAWSSQSPropertyFactory.java
index 5cb5b0f..445c9b0 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelAWSSQSPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelAWSSQSPropertyFactory.java
@@ -17,70 +17,87 @@
 
 package org.apache.camel.kafkaconnector.source.aws.sqs;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
 import com.amazonaws.regions.Regions;
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SourceConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.clients.aws.AWSConfigs;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
-
 
 /**
  * Creates the set of properties used by a Camel JMS Sink Connector
  */
-class CamelAWSSQSPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String queue;
-    private final Properties amazonConfigs;
+final class CamelAWSSQSPropertyFactory extends SourceConnectorPropertyFactory<CamelAWSSQSPropertyFactory> {
+    public static final Map<String, String> SPRING_STYLE = new HashMap<>();
+    public static final Map<String, String> KAFKA_STYLE = new HashMap<>();
 
+    static {
+        SPRING_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-sqs.accessKey");
+        SPRING_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-sqs.secretKey");
+        SPRING_STYLE.put(AWSConfigs.REGION, "camel.component.aws-sqs.region");
+        SPRING_STYLE.put(AWSConfigs.PROTOCOL, "camel.source.endpoint.protocol");
+        SPRING_STYLE.put(AWSConfigs.AMAZON_AWS_HOST, "camel.source.endpoint.amazonAWSHost");
 
-    CamelAWSSQSPropertyFactory(int tasksMax, String topic, String queue, Properties amazonConfigs) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.queue = queue;
-        this.amazonConfigs = amazonConfigs;
+        KAFKA_STYLE.put(AWSConfigs.ACCESS_KEY, "camel.component.aws-sqs.access-key");
+        KAFKA_STYLE.put(AWSConfigs.SECRET_KEY, "camel.component.aws-sqs.secret-key");
+        KAFKA_STYLE.put(AWSConfigs.REGION, "camel.component.aws-sqs.region");
+        KAFKA_STYLE.put(AWSConfigs.PROTOCOL, "camel.source.endpoint.protocol");
+        KAFKA_STYLE.put(AWSConfigs.AMAZON_AWS_HOST, "camel.source.endpoint.amazonAWSHost");
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelAWSSQSSourceConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    private CamelAWSSQSPropertyFactory() {
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSourceConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
+    }
 
-        connectorProps.put("camel.source.kafka.topic", topic);
+    public CamelAWSSQSPropertyFactory withAmazonConfig(Properties amazonConfigs) {
+        return withAmazonConfig(amazonConfigs, this.SPRING_STYLE);
+    }
 
-        String accessKey = amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, "");
-        String secretKey = amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, "");
+    public CamelAWSSQSPropertyFactory withAmazonConfig(Properties amazonConfigs, Map<String, String> style) {
+        String accessKeyKey = style.get(AWSConfigs.ACCESS_KEY);
+        String secretKeyKey = style.get(AWSConfigs.SECRET_KEY);
+        String regionKey = style.get(AWSConfigs.REGION);
+        String protocolKey = style.get(AWSConfigs.PROTOCOL);
+        String hostKey = style.get(AWSConfigs.AMAZON_AWS_HOST);
 
-        String region = amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name());
-
-        String queueUrl = String.format("aws-sqs://%s?autoCreateQueue=true&accessKey=%s&secretKey=%s&region=%s",
-                queue, accessKey, secretKey, region);
-
-        String protocol = amazonConfigs.getProperty(AWSConfigs.PROTOCOL);
-        if (protocol != null && !protocol.isEmpty()) {
-            queueUrl = String.format("%s&protocol=%s", queueUrl, protocol);
-        }
-
-        String amazonAWSHost = amazonConfigs.getProperty(AWSConfigs.AMAZON_AWS_HOST);
-        if (amazonAWSHost != null && !amazonAWSHost.isEmpty()) {
-            queueUrl = String.format("%s&amazonAWSHost=%s", queueUrl, amazonAWSHost);
-        }
-
-        connectorProps.put("camel.source.url", queueUrl);
-
-        connectorProps.put("camel.component.aws-sqs.configuration.access-key",
+        setProperty(accessKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.ACCESS_KEY, ""));
-        connectorProps.put("camel.component.aws-sqs.configuration.secret-key",
+        setProperty(secretKeyKey,
                 amazonConfigs.getProperty(AWSConfigs.SECRET_KEY, ""));
-        connectorProps.put("camel.component.aws-sqs.configuration.region",
-                amazonConfigs.getProperty(AWSConfigs.REGION, ""));
+        setProperty(regionKey,
+                amazonConfigs.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()));
 
-        return connectorProps;
+        String protocol = amazonConfigs.getProperty(AWSConfigs.PROTOCOL, "");
+        if (protocol != null && !protocol.isEmpty()) {
+            setProperty(protocolKey, protocol);
+        }
+
+        String amazonAwsHost = amazonConfigs.getProperty(AWSConfigs.AMAZON_AWS_HOST, "");
+        if (amazonAwsHost != null && !amazonAwsHost.isEmpty()) {
+            setProperty(hostKey, amazonAwsHost);
+        }
+
+        return this;
+    }
+
+    public CamelAWSSQSPropertyFactory withQueueOrArn(String queueOrArn) {
+        return setProperty("camel.source.path.queueNameOrArn", queueOrArn);
+    }
+
+    public EndpointUrlBuilder<CamelAWSSQSPropertyFactory> withUrl(String queueOrArn) {
+        String queueUrl = String.format("aws-sqs://%s", queueOrArn);
+
+        return new EndpointUrlBuilder<>(this::withSourceUrl, queueUrl);
+    }
+
+    public static CamelAWSSQSPropertyFactory basic() {
+        return new CamelAWSSQSPropertyFactory()
+                .withName("CamelAwssqsSourceConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.awssqs.CamelAwssqsSourceConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelSourceAWSSQSITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelSourceAWSSQSITCase.java
index c8e6772..07bb955 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelSourceAWSSQSITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/aws/sqs/CamelSourceAWSSQSITCase.java
@@ -20,6 +20,7 @@
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
 
+import com.amazonaws.regions.Regions;
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
 import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.TestCommon;
@@ -29,14 +30,17 @@
 import org.apache.camel.kafkaconnector.services.aws.AWSService;
 import org.apache.camel.kafkaconnector.services.aws.AWSServiceFactory;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.junit.jupiter.Testcontainers;
 
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 @Testcontainers
@@ -54,6 +58,14 @@
     @BeforeEach
     public void setUp() {
         awssqsClient = service.getClient();
+        received = 0;
+    }
+
+    @AfterEach
+    public void tearDown() {
+        if (!awssqsClient.deleteQueue(TestCommon.DEFAULT_SQS_QUEUE)) {
+            fail("Failed to delete queue");
+        }
     }
 
     private boolean checkRecord(ConsumerRecord<String, String> record) {
@@ -67,16 +79,9 @@
         return true;
     }
 
-    @Test
-    @Timeout(90)
-    public void testBasicSendReceive() throws ExecutionException, InterruptedException {
-        Properties properties = service.getConnectionProperties();
-
-        ConnectorPropertyFactory testProperties = new CamelAWSSQSPropertyFactory(1,
-                TestCommon.getDefaultTestTopic(this.getClass()), TestCommon.DEFAULT_SQS_QUEUE,
-                properties);
-
-        getKafkaConnectService().initializeConnector(testProperties);
+    public void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
 
         LOG.debug("Sending SQS messages");
         for (int i = 0; i < expect; i++) {
@@ -91,4 +96,52 @@
 
         assertEquals(received, expect, "Didn't process the expected amount of messages");
     }
+
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceive() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSSQSPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withQueueOrArn(TestCommon.DEFAULT_SQS_QUEUE)
+                .withAmazonConfig(service.getConnectionProperties());
+
+        runTest(connectorPropertyFactory);
+    }
+
+    // This test does not run remotely because SQS has a cool down period for
+    // creating and removing the SQS queue
+    @DisabledIfSystemProperty(named = "aws-service.instance.type", matches = "remote")
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveWithKafkaStyle() throws ExecutionException, InterruptedException {
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSSQSPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withQueueOrArn(TestCommon.DEFAULT_SQS_QUEUE)
+                .withAmazonConfig(service.getConnectionProperties(), CamelAWSSQSPropertyFactory.KAFKA_STYLE);
+
+        runTest(connectorPropertyFactory);
+    }
+
+    // This test does not run remotely because SQS has a cool down period for
+    // creating and removing the SQS queue
+    @DisabledIfSystemProperty(named = "aws-service.instance.type", matches = "remote")
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveUsingUrl() throws ExecutionException, InterruptedException {
+        Properties amazonProperties = service.getConnectionProperties();
+
+        ConnectorPropertyFactory connectorPropertyFactory = CamelAWSSQSPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withUrl(TestCommon.DEFAULT_SQS_QUEUE)
+                    .append("accessKey", amazonProperties.getProperty(AWSConfigs.ACCESS_KEY))
+                    .append("secretKey", amazonProperties.getProperty(AWSConfigs.SECRET_KEY))
+                    .append("protocol", amazonProperties.getProperty(AWSConfigs.PROTOCOL))
+                    .append("region", amazonProperties.getProperty(AWSConfigs.REGION, Regions.US_EAST_1.name()))
+                    .buildUrl();
+
+        runTest(connectorPropertyFactory);
+    }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelJMSPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelJMSPropertyFactory.java
index 50b6f41..471e73e 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelJMSPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelJMSPropertyFactory.java
@@ -17,48 +17,40 @@
 
 package org.apache.camel.kafkaconnector.source.jms;
 
-import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
-import java.util.stream.Collectors;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.camel.kafkaconnector.sjms2.CamelSjms2SourceConnectorConfig;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SourceConnectorPropertyFactory;
 
 
 /**
  * Creates the set of properties used by a Camel JMS Sink Connector
  */
-class CamelJMSPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private final String queue;
+final class CamelJMSPropertyFactory extends SourceConnectorPropertyFactory<CamelJMSPropertyFactory> {
+    private CamelJMSPropertyFactory() {
 
-    private final Properties connectionProperties;
-
-    CamelJMSPropertyFactory(int tasksMax, String topic, String queue, Properties connectionProperties) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.queue = queue;
-        this.connectionProperties = connectionProperties;
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelJMSSourceConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    public CamelJMSPropertyFactory withDestinationName(String destinationName) {
+        return setProperty("camel.source.path.destinationName", destinationName);
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.sjms2.CamelSjms2SourceConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(CamelSjms2SourceConnectorConfig.CAMEL_SOURCE_SJMS2_PATH_DESTINATION_NAME_CONF, queue);
-        connectorProps.put("camel.source.kafka.topic", topic);
+    public static CamelJMSPropertyFactory basic() {
+        return new CamelJMSPropertyFactory()
+                .withName("CamelJMSSourceConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.sjms2.CamelSjms2SourceConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
+    }
 
-        Set<Map.Entry<Object, Object>> set = connectionProperties.entrySet();
-        connectorProps.putAll(set.stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b)->b)));
+    public EndpointUrlBuilder<CamelJMSPropertyFactory> withUrl(String destinationName) {
+        String url = String.format("sjms2://%s", destinationName);
 
-        return connectorProps;
+        return new EndpointUrlBuilder<>(this::withSourceUrl, url);
+    }
+
+    public CamelJMSPropertyFactory withConnectionProperties(Properties connectionProperties) {
+        return merge(connectionProperties);
     }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelSourceJMSITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelSourceJMSITCase.java
index f66d50f..2cf8b9b 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelSourceJMSITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/jms/CamelSourceJMSITCase.java
@@ -17,7 +17,7 @@
 
 package org.apache.camel.kafkaconnector.source.jms;
 
-import java.util.Properties;
+import java.util.concurrent.ExecutionException;
 
 import javax.jms.JMSException;
 
@@ -29,7 +29,7 @@
 import org.apache.camel.kafkaconnector.services.jms.JMSService;
 import org.apache.camel.kafkaconnector.services.jms.JMSServiceFactory;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
-import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -55,7 +55,12 @@
     private int received;
     private final int expect = 10;
 
-    private boolean checkRecord(ConsumerRecord<String, String> record) {
+    @BeforeEach
+    public void setUp() {
+        received = 0;
+    }
+
+    private <T> boolean checkRecord(ConsumerRecord<String, T> record) {
         LOG.debug("Received: {}", record.value());
         received++;
 
@@ -87,31 +92,75 @@
         }
     }
 
+    private void produceMessages(String queue) {
+        JMSClient jmsProducer = null;
+
+        try {
+            jmsProducer = jmsService.getClient();
+
+            jmsProducer.start();
+            for (int i = 0; i < expect; i++) {
+                jmsProducer.send(queue, i);
+            }
+        } catch (JMSException e) {
+            LOG.error("JMS exception trying to send messages to the queue: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        } catch (Exception e) {
+            LOG.error("Failed to send messages to the queue: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        } finally {
+            jmsProducer.stop();
+        }
+    }
+
+    public void runBasicStringTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
+
+        produceMessages(TestCommon.DEFAULT_JMS_QUEUE, "Test string message");
+
+        LOG.debug("Creating the consumer ...");
+        KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
+        kafkaClient.consume(TestCommon.getDefaultTestTopic(this.getClass()), this::checkRecord);
+        LOG.debug("Created the consumer ...");
+
+        assertEquals(received, expect, "Didn't process the expected amount of messages");
+    }
+
     @Test
     @Timeout(90)
     public void testBasicSendReceive() {
         try {
-            Properties connectionProperties = jmsService.getConnectionProperties();
+            ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory
+                    .basic()
+                    .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withDestinationName(TestCommon.DEFAULT_JMS_QUEUE)
+                    .withConnectionProperties(jmsService.getConnectionProperties());
 
-            ConnectorPropertyFactory testProperties = new CamelJMSPropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()), TestCommon.DEFAULT_JMS_QUEUE, connectionProperties);
-
-            getKafkaConnectService().initializeConnector(testProperties);
-
-            produceMessages(TestCommon.DEFAULT_JMS_QUEUE, "Test string message");
-
-            LOG.debug("Creating the consumer ...");
-            KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
-            kafkaClient.consume(TestCommon.getDefaultTestTopic(this.getClass()), this::checkRecord);
-            LOG.debug("Created the consumer ...");
-
-            assertEquals(received, expect, "Didn't process the expected amount of messages");
+            runBasicStringTest(connectorPropertyFactory);
         } catch (Exception e) {
             LOG.error("JMS test failed: {}", e.getMessage(), e);
             fail(e.getMessage());
         }
     }
 
+    @Test
+    @Timeout(90)
+    public void testBasicSendReceiveUsingUrl() {
+        try {
+            ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory
+                    .basic()
+                    .withConnectionProperties(jmsService.getConnectionProperties())
+                    .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                    .withUrl(TestCommon.DEFAULT_JMS_QUEUE)
+                        .buildUrl();
+
+            runBasicStringTest(connectorPropertyFactory);
+        } catch (Exception e) {
+            LOG.error("JMS test failed: {}", e.getMessage(), e);
+            fail(e.getMessage());
+        }
+    }
 
 
     @Test
@@ -120,18 +169,19 @@
         try {
             final String jmsQueueName = "testIntSendReceive";
 
-            Properties connectionProperties = jmsService.getConnectionProperties();
+            ConnectorPropertyFactory connectorPropertyFactory = CamelJMSPropertyFactory
+                    .basic()
+                    .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()) + jmsQueueName)
+                    .withDestinationName(jmsQueueName)
+                    .withConnectionProperties(jmsService.getConnectionProperties());
 
-            ConnectorPropertyFactory testProperties = new CamelJMSPropertyFactory(1,
-                    TestCommon.getDefaultTestTopic(this.getClass()) + jmsQueueName,
-                    jmsQueueName, connectionProperties);
+            connectorPropertyFactory.log();
+            getKafkaConnectService().initializeConnector(connectorPropertyFactory);
 
-            getKafkaConnectService().initializeConnector(testProperties);
-
-            produceMessages(jmsQueueName, "Test string message");
+            produceMessages(jmsQueueName);
 
             LOG.debug("Creating the consumer ...");
-            KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
+            KafkaClient<String, Integer> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
             kafkaClient.consume(TestCommon.getDefaultTestTopic(this.getClass()) + "testIntSendReceive", this::checkRecord);
             LOG.debug("Created the consumer ...");
 
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelSourceTimerITCase.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelSourceTimerITCase.java
index da8688f..56301ef 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelSourceTimerITCase.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelSourceTimerITCase.java
@@ -20,6 +20,7 @@
 import java.util.concurrent.ExecutionException;
 
 import org.apache.camel.kafkaconnector.AbstractKafkaTest;
+import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
 import org.apache.camel.kafkaconnector.TestCommon;
 import org.apache.camel.kafkaconnector.clients.kafka.KafkaClient;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
@@ -45,7 +46,7 @@
 
     @BeforeEach
     public void setUp() {
-
+        received = 0;
     }
 
     private boolean checkRecord(ConsumerRecord<String, String> record) {
@@ -58,13 +59,9 @@
         return true;
     }
 
-    @Test
-    @Timeout(90)
-    public void testLaunchConnector() throws ExecutionException, InterruptedException {
-        CamelTimerPropertyFactory testProperties = new CamelTimerPropertyFactory(1,
-                TestCommon.getDefaultTestTopic(this.getClass()), expect);
-
-        getKafkaConnectService().initializeConnector(testProperties);
+    private void runTest(ConnectorPropertyFactory connectorPropertyFactory) throws ExecutionException, InterruptedException {
+        connectorPropertyFactory.log();
+        getKafkaConnectService().initializeConnector(connectorPropertyFactory);
 
         LOG.debug("Creating the consumer ...");
         KafkaClient<String, String> kafkaClient = new KafkaClient<>(getKafkaService().getBootstrapServers());
@@ -73,4 +70,29 @@
 
         assertEquals(received, expect);
     }
+
+    @Test
+    @Timeout(90)
+    public void testLaunchConnector() throws ExecutionException, InterruptedException {
+        CamelTimerPropertyFactory connectorPropertyFactory = CamelTimerPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withTimerName("launchTest")
+                .withRepeatCount(expect);
+
+        runTest(connectorPropertyFactory);
+    }
+
+    @Test
+    @Timeout(90)
+    public void testLaunchConnectorUsingUrl() throws ExecutionException, InterruptedException {
+        CamelTimerPropertyFactory connectorPropertyFactory = CamelTimerPropertyFactory
+                .basic()
+                .withKafkaTopic(TestCommon.getDefaultTestTopic(this.getClass()))
+                .withUrl("launchTestUsingUrl")
+                    .append("repeatCount", expect)
+                    .buildUrl();
+
+        runTest(connectorPropertyFactory);
+    }
 }
diff --git a/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelTimerPropertyFactory.java b/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelTimerPropertyFactory.java
index 1d459c4..8e82135 100644
--- a/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelTimerPropertyFactory.java
+++ b/tests/src/test/java/org/apache/camel/kafkaconnector/source/timer/CamelTimerPropertyFactory.java
@@ -17,34 +17,35 @@
 
 package org.apache.camel.kafkaconnector.source.timer;
 
-import java.util.Properties;
+import org.apache.camel.kafkaconnector.EndpointUrlBuilder;
+import org.apache.camel.kafkaconnector.SourceConnectorPropertyFactory;
 
-import org.apache.camel.kafkaconnector.ConnectorPropertyFactory;
-import org.apache.kafka.connect.runtime.ConnectorConfig;
+final class CamelTimerPropertyFactory extends SourceConnectorPropertyFactory<CamelTimerPropertyFactory> {
 
-class CamelTimerPropertyFactory implements ConnectorPropertyFactory {
-    private final int tasksMax;
-    private final String topic;
-    private int repeatCount;
+    private CamelTimerPropertyFactory() {
 
-    public CamelTimerPropertyFactory(int tasksMax, String topic, int repeatCount) {
-        this.tasksMax = tasksMax;
-        this.topic = topic;
-        this.repeatCount = repeatCount;
     }
 
-    @Override
-    public Properties getProperties() {
-        Properties connectorProps = new Properties();
-        connectorProps.put(ConnectorConfig.NAME_CONFIG, "CamelSourceConnector");
-        connectorProps.put("tasks.max", String.valueOf(tasksMax));
+    public CamelTimerPropertyFactory withRepeatCount(int repeatCount) {
+        return setProperty("camel.source.endpoint.repeatCount", repeatCount);
+    }
 
-        connectorProps.put(ConnectorConfig.CONNECTOR_CLASS_CONFIG, "org.apache.camel.kafkaconnector.CamelSourceConnector");
-        connectorProps.put(ConnectorConfig.KEY_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put(ConnectorConfig.VALUE_CONVERTER_CLASS_CONFIG, "org.apache.kafka.connect.storage.StringConverter");
-        connectorProps.put("camel.source.url", String.format("timer:kafkaconnector?repeatCount=%d", repeatCount));
-        connectorProps.put("camel.source.kafka.topic", topic);
+    public CamelTimerPropertyFactory withTimerName(String timerName) {
+        return setProperty("camel.source.path.timerName", timerName);
+    }
 
-        return connectorProps;
+    public EndpointUrlBuilder<CamelTimerPropertyFactory> withUrl(String timerName) {
+        String url = String.format("timer:%s", timerName);
+
+        return new EndpointUrlBuilder<>(this::withSourceUrl, url);
+    }
+
+    public static CamelTimerPropertyFactory basic() {
+        return new CamelTimerPropertyFactory()
+                .withName("CamelTimerSourceConnector")
+                .withTasksMax(1)
+                .withConnectorClass("org.apache.camel.kafkaconnector.timer.CamelTimerSourceConnector")
+                .withKeyConverterClass("org.apache.kafka.connect.storage.StringConverter")
+                .withValueConverterClass("org.apache.kafka.connect.storage.StringConverter");
     }
 }
diff --git a/tests/src/test/resources/log4j2.properties b/tests/src/test/resources/log4j2.properties
index c52db4d..afa5697 100644
--- a/tests/src/test/resources/log4j2.properties
+++ b/tests/src/test/resources/log4j2.properties
@@ -48,6 +48,15 @@
 logger.kafka.level = WARN
 logger.kafka.appenderRef.file.ref = file
 
+logger.kafka-delegating.name = org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader
+logger.kafka-delegating.level = INFO
+logger.kafka-delegating.appenderRef.file.ref = file
+
 logger.glassfish.name = org.glassfish.jersey.internal
 logger.glassfish.level = FATAL
 logger.glassfish.appenderRef.file.ref = file
+
+logger.connector.name = org.apache.camel.kafkaconnector
+logger.connector.level = DEBUG
+logger.connector.additivity = false
+logger.connector.appenderRef.file.ref = file
\ No newline at end of file
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/README.adoc b/tooling/camel-kafka-connector-generator-maven-plugin/README.adoc
new file mode 100644
index 0000000..bf4640a
--- /dev/null
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/README.adoc
@@ -0,0 +1,3 @@
+== Camel Kafka Connector generator plugin
+
+//TODO: write the plugin documentation
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml b/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml
index f0a98e8..817b318 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.camel.kafkaconnector</groupId>
         <artifactId>tooling</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
+        <version>0.2.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>camel-kafka-connector-generator-maven-plugin</artifactId>
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java
index d1eef84..f41634e 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java
@@ -94,6 +94,12 @@
      */
     @Parameter(defaultValue = "${basedir}")
     protected File projectDir;
+    
+    /**
+     * The project directory
+     */
+    @Parameter(defaultValue = "${basedir}/../")
+    protected File projectBaseDir;
 
     /**
      * The maven project.
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorCreateMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorCreateMojo.java
index 0c61d9c..5c95b52 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorCreateMojo.java
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorCreateMojo.java
@@ -17,6 +17,7 @@
 package org.apache.camel.kafkaconnector.maven;
 
 import java.io.File;
+import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashMap;
@@ -49,6 +50,9 @@
     @Parameter(property = "componentJson", required = true)
     protected String componentJson;
 
+    @Parameter(property = "overridePomFile", required = false, defaultValue = "false")
+    protected Boolean overridePomFile;
+
     @Override
     protected String getMainDepArtifactId() {
         return "camel-" + name;
@@ -79,8 +83,12 @@
         File directory = new File(projectDir, "camel-" + sanitizedName + KAFKA_CONNECTORS_SUFFIX);
         if (directory.exists()) {
             if (directory.isDirectory()) {
-                //nothing to do
                 getLog().info("Connector " + name + " already exists since a sub directory named: " + directory.getName() + " already exists.");
+                if (overridePomFile) {
+                    getLog().info("Since overridePomFile is " + overridePomFile + " regenerating pom file for connector:" + name + " in directory named: " + directory.getName());
+                    generateAndWritePom(sanitizedName, directory);
+                    addConnectorAsProjectSubmodule(sanitizedName);
+                }
                 return;
             } else {
                 throw new MojoFailureException("Can not create directory as a file already exists: " + directory);
@@ -89,7 +97,11 @@
         if (!directory.mkdirs()) {
             throw new MojoFailureException("Unable to create directory: " + directory);
         }
+        generateAndWritePom(sanitizedName, directory);
+        addConnectorAsProjectSubmodule(sanitizedName);
+    }
 
+    private void generateAndWritePom(String sanitizedName, File directory) throws Exception {
         //create initial connector pom
         ComponentModel cm = JsonMapper.generateComponentModel(componentJson);
         getLog().info("Creating a new pom.xml for the connector from scratch");
@@ -110,7 +122,9 @@
             getLog().error("Cannot create pom.xml file from Template: " + pomTemplate + " with properties: " + props, e);
             throw e;
         }
+    }
 
+    private void addConnectorAsProjectSubmodule(String sanitizedName) throws IOException {
         //add connector as a sub module
         Path parent = new File(projectDir, "pom.xml").toPath();
         List<String> lines = Files.readAllLines(parent);
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorUpdateMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorUpdateMojo.java
index ab15031..386cceb 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorUpdateMojo.java
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorUpdateMojo.java
@@ -22,6 +22,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -46,15 +48,20 @@
 import org.xml.sax.SAXException;
 
 import freemarker.template.Template;
+import org.apache.camel.kafkaconnector.maven.dto.CamelKafkaConnectorModel;
+import org.apache.camel.kafkaconnector.maven.dto.CamelKafkaConnectorOptionModel;
 import org.apache.camel.kafkaconnector.maven.utils.MavenUtils;
+import org.apache.camel.maven.packaging.MvelHelper;
 import org.apache.camel.tooling.model.BaseOptionModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.JsonMapper;
+import org.apache.camel.tooling.util.Strings;
 import org.apache.camel.tooling.util.srcgen.JavaClass;
 import org.apache.camel.tooling.util.srcgen.Method;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
@@ -62,19 +69,20 @@
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.codehaus.plexus.resource.loader.FileResourceCreationException;
 import org.codehaus.plexus.resource.loader.ResourceNotFoundException;
-
+import org.mvel2.templates.TemplateRuntime;
 
 import static org.apache.camel.kafkaconnector.maven.utils.MavenUtils.sanitizeMavenArtifactId;
 import static org.apache.camel.kafkaconnector.maven.utils.MavenUtils.writeFileIfChanged;
 import static org.apache.camel.kafkaconnector.maven.utils.MavenUtils.writeXmlFormatted;
+import static org.apache.camel.tooling.util.PackageHelper.loadText;
+import static org.apache.camel.tooling.util.PackageHelper.writeText;
 
 /**
  * Generate Camel Kafka Connector for the component
  */
-@Mojo(name = "camel-kafka-connector-update", threadSafe = true,
-        requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME,
-        requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME,
-        defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+@Mojo(name = "camel-kafka-connector-update", threadSafe = true, 
+requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME, 
+defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
 public class CamelKafkaConnectorUpdateMojo extends AbstractCamelKafkaConnectorMojo {
 
     private static final String GENERATED_SECTION_START = "START OF GENERATED CODE";
@@ -86,7 +94,6 @@
     private static final String ADDITIONAL_COMMON_PROPERTIES_PROPERTY_PREFIX = "additional_properties_";
     private static final String XML_FEATURES_DISALLOW_DOCTYPE_DECL = "http://apache.org/xml/features/disallow-doctype-decl";
 
-
     private static final Map<String, Class<?>> PRIMITIVEMAP;
     private static final Map<String, String> CONFIGDEFMAP;
 
@@ -128,8 +135,9 @@
     private MavenSession session;
 
     /**
-     * A comma separated list of column separated GAV to include as dependencies to the generated camel kafka connector.
-     * (i.e. groupId:ArtifactId:version,groupId_2:ArtifactId_2:version_2)
+     * A comma separated list of column separated GAV to include as dependencies
+     * to the generated camel kafka connector. (i.e.
+     * groupId:ArtifactId:version,groupId_2:ArtifactId_2:version_2)
      */
     @Parameter(defaultValue = "", readonly = true)
     private String additionalDependencies;
@@ -212,7 +220,7 @@
     }
 
     private void fixExcludedDependencies(Document pom) throws Exception {
-        //add dependencies to be excluded form camel component dependency
+        // add dependencies to be excluded form camel component dependency
         Set<String> loggingImpl = new HashSet<>();
 
         // excluded dependencies
@@ -250,8 +258,8 @@
         boolean inGlobal = false;
         for (String gp : globalProps) {
             String camelGav = getMainDepGroupId() + ":" + getMainDepArtifactId();
-            String camelSpringBootGav = project.getGroupId() + ":" + project.getArtifactId();
-            if (gp.equals(camelGav) || gp.equals(camelSpringBootGav)) {
+            String camelKafkaConnectorGav = project.getGroupId() + ":" + project.getArtifactId();
+            if (gp.equals(camelGav) || gp.equals(camelKafkaConnectorGav)) {
                 inGlobal = true;
                 break;
             }
@@ -277,7 +285,7 @@
             Document originalPom = builder.parse(project.getFile());
 
             XPath xpath = XPathFactory.newInstance().newXPath();
-            Node repositories = (Node) xpath.compile("/project/repositories").evaluate(originalPom, XPathConstants.NODE);
+            Node repositories = (Node)xpath.compile("/project/repositories").evaluate(originalPom, XPathConstants.NODE);
             if (repositories != null) {
                 pom.getDocumentElement().appendChild(pom.createComment(GENERATED_SECTION_START));
                 pom.getDocumentElement().appendChild(pom.importNode(repositories, true));
@@ -319,7 +327,8 @@
                     return pom;
                 } else {
                     getLog().error("Cannot use the existing pom.xml file since it is not editable. It does not contain " + GENERATED_SECTION_START_COMMENT);
-                    throw new UnsupportedOperationException("Cannot use the existing pom.xml file since it is not editable. It does not contain " + GENERATED_SECTION_START_COMMENT);
+                    throw new UnsupportedOperationException("Cannot use the existing pom.xml file since it is not editable. It does not contain "
+                                                            + GENERATED_SECTION_START_COMMENT);
                 }
             }
         } else {
@@ -331,8 +340,7 @@
     private void writeStaticFiles(File connectorDir) throws IOException, ResourceNotFoundException, FileResourceCreationException {
         String notice;
         String license;
-        try (InputStream isNotice = new FileInputStream(rm.getResourceAsFile(noticeTemplate));
-             InputStream isLicense = new FileInputStream(rm.getResourceAsFile(licenseTemplate))) {
+        try (InputStream isNotice = new FileInputStream(rm.getResourceAsFile(noticeTemplate)); InputStream isLicense = new FileInputStream(rm.getResourceAsFile(licenseTemplate))) {
             notice = IOUtils.toString(isNotice, StandardCharsets.UTF_8);
             license = IOUtils.toString(isLicense, StandardCharsets.UTF_8);
         }
@@ -347,7 +355,8 @@
         return componentId;
     }
 
-    private void createClasses(String sanitizedName, File connectorDir, ComponentModel model, ConnectorType ct) throws MojoFailureException, ResourceNotFoundException, FileResourceCreationException, IOException {
+    private void createClasses(String sanitizedName, File connectorDir, ComponentModel model, ConnectorType ct)
+        throws MojoFailureException, ResourceNotFoundException, FileResourceCreationException, IOException, MojoExecutionException {
         String ctCapitalizedName = StringUtils.capitalize(ct.name().toLowerCase());
         String ctLowercaseName = ct.name().toLowerCase();
         String packageName = "org.apache.camel.kafkaconnector." + RESERVEDWORDSUBSTITUTIONMAP.getOrDefault(sanitizedName.replace("-", ""), sanitizedName.replace("-", ""));
@@ -361,33 +370,25 @@
         getLog().debug("Additional " + ctLowercaseName + " connector properties: " + sourceOrSinkPropertyValue);
         addProperties(additionalProperties, sourceOrSinkPropertyValue);
 
-        //Camel{sanitizedName}{Sink,Source}ConnectorConfig.java
+        // Camel{sanitizedName}{Sink,Source}ConnectorConfig.java
         String javaClassConnectorConfigName = "Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "ConnectorConfig";
         final JavaClass javaClassConnectorConfig = new JavaClass(getProjectClassLoader());
         javaClassConnectorConfig.setPackage(packageName);
         javaClassConnectorConfig.setName(javaClassConnectorConfigName);
-        javaClassConnectorConfig.addAnnotation(Generated.class).setStringValue("value", "This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.");
+        javaClassConnectorConfig.addAnnotation(Generated.class)
+            .setStringValue("value", "This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.");
         javaClassConnectorConfig.extendSuperType("Camel" + ctCapitalizedName + "ConnectorConfig");
         javaClassConnectorConfig.addImport("java.util.Map");
         javaClassConnectorConfig.addImport("org.apache.camel.kafkaconnector.Camel" + ctCapitalizedName + "ConnectorConfig");
         javaClassConnectorConfig.addImport("org.apache.kafka.common.config.ConfigDef");
 
-        javaClassConnectorConfig.addMethod().setConstructor(true).setName(javaClassConnectorConfigName)
-                .addParameter("ConfigDef", "config")
-                .addParameter("Map<String, String>", "parsedConfig")
-                .setPublic()
-                .setBody("super(config, parsedConfig);");
-        javaClassConnectorConfig.addMethod().setConstructor(true).setName(javaClassConnectorConfigName)
-                .addParameter("Map<String, String>", "parsedConfig")
-                .setPublic()
-                .setBody("this(conf(), parsedConfig);");
+        javaClassConnectorConfig.addMethod().setConstructor(true).setName(javaClassConnectorConfigName).addParameter("ConfigDef", "config")
+            .addParameter("Map<String, String>", "parsedConfig").setPublic().setBody("super(config, parsedConfig);");
+        javaClassConnectorConfig.addMethod().setConstructor(true).setName(javaClassConnectorConfigName).addParameter("Map<String, String>", "parsedConfig").setPublic()
+            .setBody("this(conf(), parsedConfig);");
 
-        Method confMethod = javaClassConnectorConfig.addMethod().setConstructor(false).setName("conf")
-                .addParameter("Map<String, String>", "parsedConfig")
-                .setReturnType("ConfigDef")
-                .setPublic()
-                .setStatic()
-                .setBody("ConfigDef conf = new ConfigDef(Camel" + ctCapitalizedName + "ConnectorConfig.conf());\n");
+        Method confMethod = javaClassConnectorConfig.addMethod().setConstructor(false).setName("conf").addParameter("Map<String, String>", "parsedConfig")
+            .setReturnType("ConfigDef").setPublic().setStatic().setBody("ConfigDef conf = new ConfigDef(Camel" + ctCapitalizedName + "ConnectorConfig.conf());\n");
 
         Predicate<? super BaseOptionModel> filterEndpointOptions;
         switch (ct) {
@@ -395,10 +396,8 @@
                 filterEndpointOptions = new Predicate<BaseOptionModel>() {
                     @Override
                     public boolean test(BaseOptionModel optionModel) {
-                        return optionModel.getLabel() == null
-                                || optionModel.getLabel().contains("producer")
-                                || (!optionModel.getLabel().contains("producer")
-                                && !optionModel.getLabel().contains("consumer"));
+                        return optionModel.getLabel() == null || optionModel.getLabel().contains("producer")
+                             || (!optionModel.getLabel().contains("producer") && !optionModel.getLabel().contains("consumer"));
                     }
                 };
                 break;
@@ -406,10 +405,8 @@
                 filterEndpointOptions = new Predicate<BaseOptionModel>() {
                     @Override
                     public boolean test(BaseOptionModel optionModel) {
-                        return optionModel.getLabel() == null
-                                || optionModel.getLabel().contains("consumer")
-                                || (!optionModel.getLabel().contains("producer")
-                                && !optionModel.getLabel().contains("consumer"));
+                        return optionModel.getLabel() == null || optionModel.getLabel().contains("consumer")
+                               || (!optionModel.getLabel().contains("producer") && !optionModel.getLabel().contains("consumer"));
                     }
                 };
                 break;
@@ -417,44 +414,39 @@
                 throw new UnsupportedOperationException("Connector type not supported: " + ct + " must be one of " + ConnectorType.SINK + ", " + ConnectorType.SOURCE);
         }
 
-        model.getEndpointPathOptions().stream()
-                .filter(filterEndpointOptions)
-                .forEachOrdered(epo -> addConnectorOptions(sanitizedName, ct, javaClassConnectorConfig, confMethod, "PATH",  ctLowercaseName, "path", epo));
-        model.getEndpointParameterOptions().stream()
-                .filter(filterEndpointOptions)
-                .forEachOrdered(epo -> addConnectorOptions(sanitizedName, ct, javaClassConnectorConfig, confMethod, "ENDPOINT", ctLowercaseName, "endpoint", epo));
-        model.getComponentOptions().stream()
-                .filter(filterEndpointOptions)
-                .forEachOrdered(co -> addConnectorOptions(sanitizedName, ct, javaClassConnectorConfig, confMethod, "COMPONENT", "component", sanitizedName, co));
+        List<CamelKafkaConnectorOptionModel> listOptions = new ArrayList<CamelKafkaConnectorOptionModel>();
+        model.getEndpointPathOptions().stream().filter(filterEndpointOptions)
+            .forEachOrdered(epo -> addConnectorOptions(sanitizedName, ct, javaClassConnectorConfig, confMethod, "PATH", ctLowercaseName, "path", epo, listOptions));
+        model.getEndpointParameterOptions().stream().filter(filterEndpointOptions)
+            .forEachOrdered(epo -> addConnectorOptions(sanitizedName, ct, javaClassConnectorConfig, confMethod, "ENDPOINT", ctLowercaseName, "endpoint", epo, listOptions));
+        model.getComponentOptions().stream().filter(filterEndpointOptions)
+            .forEachOrdered(co -> addConnectorOptions(sanitizedName, ct, javaClassConnectorConfig, confMethod, "COMPONENT", "component", sanitizedName, co, listOptions));
 
         confMethod.setBody(confMethod.getBody() + "return conf;");
 
         String javaClassConnectorConfigFileName = packageName.replaceAll("\\.", "\\/") + "/" + javaClassConnectorConfigName + ".java";
         MavenUtils.writeSourceIfChanged(javaClassConnectorConfig, javaClassConnectorConfigFileName, false, connectorDir, rm.getResourceAsFile(javaFilesHeader));
 
-        //Camel{sanitizedName}{Sink,Source}Task.java
+        // Camel{sanitizedName}{Sink,Source}Task.java
         String javaClassTaskName = "Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "Task";
         final JavaClass javaClassTask = new JavaClass(getProjectClassLoader());
         javaClassTask.setPackage(packageName);
         javaClassTask.setName(javaClassTaskName);
-        javaClassTask.addAnnotation(Generated.class).setStringValue("value", "This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.");
+        javaClassTask.addAnnotation(Generated.class)
+            .setStringValue("value", "This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.");
         javaClassTask.extendSuperType("Camel" + ctCapitalizedName + "Task");
         javaClassTask.addImport("java.util.HashMap");
         javaClassTask.addImport("java.util.Map");
         javaClassTask.addImport("org.apache.camel.kafkaconnector.Camel" + ctCapitalizedName + "ConnectorConfig");
         javaClassTask.addImport("org.apache.camel.kafkaconnector.Camel" + ctCapitalizedName + "Task");
 
-        javaClassTask.addMethod().setConstructor(false).setName("getCamel" + ctCapitalizedName + "ConnectorConfig")
-                .setProtected()
-                .addParameter("Map<String, String>", "props")
-                .setReturnType("Camel" + ctCapitalizedName + "ConnectorConfig")
-                .setBody("return new Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "ConnectorConfig(props);")
-                .addAnnotation(Override.class);
-        Method getDefaultConfigMethod = javaClassTask.addMethod().setConstructor(false).setName("getDefaultConfig")
-                .setProtected()
-                .setReturnType("Map<String, String>")
-                .setBody("return new HashMap<String, String>() {{\n");
-        getDefaultConfigMethod.setBody(getDefaultConfigMethod.getBody() + "    put(Camel" + ctCapitalizedName + "ConnectorConfig.CAMEL_" + ct + "_COMPONENT_CONF, \"" + model.getScheme() + "\");\n");
+        javaClassTask.addMethod().setConstructor(false).setName("getCamel" + ctCapitalizedName + "ConnectorConfig").setProtected().addParameter("Map<String, String>", "props")
+            .setReturnType("Camel" + ctCapitalizedName + "ConnectorConfig")
+            .setBody("return new Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "ConnectorConfig(props);").addAnnotation(Override.class);
+        Method getDefaultConfigMethod = javaClassTask.addMethod().setConstructor(false).setName("getDefaultConfig").setProtected().setReturnType("Map<String, String>")
+            .setBody("return new HashMap<String, String>() {{\n");
+        getDefaultConfigMethod
+            .setBody(getDefaultConfigMethod.getBody() + "    put(Camel" + ctCapitalizedName + "ConnectorConfig.CAMEL_" + ct + "_COMPONENT_CONF, \"" + model.getScheme() + "\");\n");
         for (String key : new TreeSet<String>(additionalProperties.keySet())) {
             getDefaultConfigMethod.setBody(getDefaultConfigMethod.getBody() + "    put(\"" + key + "\", \"" + additionalProperties.get(key) + "\");\n");
         }
@@ -463,30 +455,43 @@
         String javaClassTaskFileName = packageName.replaceAll("\\.", "\\/") + "/" + javaClassTaskName + ".java";
         MavenUtils.writeSourceIfChanged(javaClassTask, javaClassTaskFileName, false, connectorDir, rm.getResourceAsFile(javaFilesHeader));
 
-        //Camel{sanitizedName}{Sink,Source}Connector.java
+        // Camel{sanitizedName}{Sink,Source}Connector.java
         String javaClassConnectorName = "Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "Connector";
         final JavaClass javaClassConnector = new JavaClass(getProjectClassLoader());
         javaClassConnector.setPackage(packageName);
         javaClassConnector.setName(javaClassConnectorName);
-        javaClassConnector.addAnnotation(Generated.class).setStringValue("value", "This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.");
+        javaClassConnector.addAnnotation(Generated.class)
+            .setStringValue("value", "This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.");
         javaClassConnector.extendSuperType("Camel" + ctCapitalizedName + "Connector");
         javaClassConnector.addImport("org.apache.camel.kafkaconnector.Camel" + ctCapitalizedName + "Connector");
         javaClassConnector.addImport("org.apache.kafka.common.config.ConfigDef");
         javaClassConnector.addImport("org.apache.kafka.connect.connector.Task");
 
-        javaClassConnector.addMethod().setConstructor(false).setName("config")
-                .setPublic()
-                .setReturnType("ConfigDef")
-                .setBody("return Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "ConnectorConfig.conf();")
-                .addAnnotation(Override.class);
-        javaClassConnector.addMethod().setConstructor(false).setName("taskClass")
-                .setPublic()
-                .setReturnType("Class<? extends Task>")
-                .setBody("return Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "Task.class;")
-                .addAnnotation(Override.class);
+        javaClassConnector.addMethod().setConstructor(false).setName("config").setPublic().setReturnType("ConfigDef")
+            .setBody("return Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "ConnectorConfig.conf();").addAnnotation(Override.class);
+        javaClassConnector.addMethod().setConstructor(false).setName("taskClass").setPublic().setReturnType("Class<? extends Task>")
+            .setBody("return Camel" + StringUtils.capitalize(sanitizedName.replace("-", "")) + ctCapitalizedName + "Task.class;").addAnnotation(Override.class);
 
         String javaClassConnectorFileName = packageName.replaceAll("\\.", "\\/") + "/" + javaClassConnectorName + ".java";
         MavenUtils.writeSourceIfChanged(javaClassConnector, javaClassConnectorFileName, false, connectorDir, rm.getResourceAsFile(javaFilesHeader));
+
+        File docFolder = new File(connectorDir, "src/main/docs/");
+        File docFile = new File(docFolder, getMainDepArtifactId() + "-kafka-" + ct.name().toLowerCase() + "-connector.adoc");
+        File docFolderWebsite = new File(projectBaseDir, "docs/modules/ROOT/pages/connectors/");
+        File docFileWebsite = new File(docFolderWebsite, getMainDepArtifactId() + "-kafka-" + ct.name().toLowerCase() + "-connector.adoc");
+        String changed = templateAutoConfigurationOptions(listOptions, getMainDepArtifactId(), connectorDir, ct);
+        boolean updated = updateAutoConfigureOptions(docFile, changed);
+        if (updated) {
+            getLog().info("Updated doc file: " + docFile);
+        } else {
+            getLog().debug("No changes to doc file: " + docFile);
+        }
+        boolean updatedWebsite = updateAutoConfigureOptions(docFileWebsite, changed);
+        if (updatedWebsite) {
+            getLog().info("Updated website doc file: " + docFileWebsite);
+        } else {
+            getLog().debug("No changes to website doc file: " + docFileWebsite);
+        }
     }
 
     private void addProperties(Map<String, String> additionalProperties, String additionalProp) {
@@ -500,20 +505,19 @@
         }
     }
 
-    private void addConnectorOptions(String sanitizedName, ConnectorType ct, JavaClass javaClass, Method confMethod, String propertyQualifier, String firstNamespace, String secondNamespace, BaseOptionModel epo) {
+    private void addConnectorOptions(String sanitizedName, ConnectorType ct, JavaClass javaClass, Method confMethod, String propertyQualifier, String firstNamespace,
+                                     String secondNamespace, BaseOptionModel epo, List<CamelKafkaConnectorOptionModel> listOptions) {
         String propertyName = epo.getName();
 
         String regex = "([A-Z][a-z]+)";
         String replacement = "$1_";
 
-        String propertyPrefix = "CAMEL_" + ct + "_" + sanitizedName.replace("-", "").toUpperCase() + "_" + propertyQualifier.toUpperCase() + "_" + StringUtils.capitalize(propertyName).replaceAll(regex, replacement).toUpperCase();
+        String propertyPrefix = "CAMEL_" + ct + "_" + sanitizedName.replace("-", "").toUpperCase() + "_" + propertyQualifier.toUpperCase() + "_"
+                                + StringUtils.capitalize(propertyName).replaceAll(regex, replacement).toUpperCase();
         String propertyValue = "camel." + firstNamespace + "." + secondNamespace + "." + epo.getName();
 
         String confFieldName = propertyPrefix + "CONF";
-        javaClass.addField().setFinal(true).setPublic().setStatic(true)
-                .setName(confFieldName)
-                .setType(String.class)
-                .setStringInitializer(propertyValue);
+        javaClass.addField().setFinal(true).setPublic().setStatic(true).setName(confFieldName).setType(String.class).setStringInitializer(propertyValue);
 
         String docFieldName = propertyPrefix + "DOC";
         String docLiteralInitializer = epo.getDescription();
@@ -522,14 +526,11 @@
             String enumOptionListing = epo.getEnums().stream().reduce("", (s, s2) -> s + " [" + s2 + "]");
             docLiteralInitializer = docLiteralInitializer + enumOptionListing;
         }
-        javaClass.addField().setFinal(true).setPublic().setStatic(true)
-                .setName(docFieldName)
-                .setType(String.class)
-                .setStringInitializer(docLiteralInitializer);
+        javaClass.addField().setFinal(true).setPublic().setStatic(true).setName(docFieldName).setType(String.class).setStringInitializer(docLiteralInitializer);
 
         String defaultFieldName = propertyPrefix + "DEFAULT";
         Class<?> defaultValueClass = PRIMITIVEMAP.getOrDefault(epo.getShortJavaType(), String.class);
-        String defaultValueClassLiteralInitializer = epo.getDefaultValue() ==  null ? "null" : epo.getDefaultValue().toString();
+        String defaultValueClassLiteralInitializer = epo.getDefaultValue() == null ? "null" : epo.getDefaultValue().toString();
         if (!defaultValueClassLiteralInitializer.equals("null") && defaultValueClass.equals(String.class)) {
             defaultValueClassLiteralInitializer = "\"" + defaultValueClassLiteralInitializer + "\"";
         } else if (!defaultValueClassLiteralInitializer.equals("null") && defaultValueClass.equals(Long.class)) {
@@ -539,19 +540,90 @@
         } else if (!defaultValueClassLiteralInitializer.equals("null") && defaultValueClass.equals(Double.class)) {
             defaultValueClassLiteralInitializer = defaultValueClassLiteralInitializer + "D";
         }
-        javaClass.addField().setFinal(true).setPublic().setStatic(true)
-                .setName(defaultFieldName)
-                .setType(defaultValueClass)
-                .setLiteralInitializer(defaultValueClassLiteralInitializer);
+        javaClass.addField().setFinal(true).setPublic().setStatic(true).setName(defaultFieldName).setType(defaultValueClass)
+            .setLiteralInitializer(defaultValueClassLiteralInitializer);
 
         String confType = CONFIGDEFMAP.getOrDefault(epo.getShortJavaType(), "ConfigDef.Type.STRING");
         String confPriority = epo.isDeprecated() ? "ConfigDef.Importance.LOW" : "ConfigDef.Importance.MEDIUM";
         confPriority = epo.isRequired() ? "ConfigDef.Importance.HIGH" : confPriority;
         confMethod.setBody(confMethod.getBody() + "conf.define(" + confFieldName + ", " + confType + ", " + defaultFieldName + ", " + confPriority + ", " + docFieldName + ");\n");
+
+        CamelKafkaConnectorOptionModel optionModel = new CamelKafkaConnectorOptionModel();
+        optionModel.setName(propertyValue);
+        optionModel.setDescription(docLiteralInitializer);
+        optionModel.setPriority(confPriority);
+        optionModel.setDefaultValue(defaultValueClassLiteralInitializer);
+        listOptions.add(optionModel);
+    }
+
+    private String templateAutoConfigurationOptions(List<CamelKafkaConnectorOptionModel> options, String componentName, File connectorDir, ConnectorType ct)
+        throws MojoExecutionException {
+
+        CamelKafkaConnectorModel model = new CamelKafkaConnectorModel();
+        model.setOptions(options);
+        model.setArtifactId(getMainDepArtifactId());
+        model.setGroupId(getMainDepGroupId());
+        model.setVersion(getMainDepVersion());
+        if (getMainDepArtifactId().equalsIgnoreCase("camel-coap+tcp")) {
+            model.setTitle("camel-coap-tcp");
+        } else if (getMainDepArtifactId().equalsIgnoreCase("camel-coaps+tcp")) {
+            model.setTitle("camel-coaps-tcp");
+        } else {
+            model.setTitle(getMainDepArtifactId());
+        }
+
+        try {
+            String template = null;
+            if (ct.name().equals(ConnectorType.SINK.name())) {
+                template = loadText(CamelKafkaConnectorUpdateMojo.class.getClassLoader().getResourceAsStream("camel-kafka-connector-sink-options.mvel"));
+            } else if (ct.name().equals(ConnectorType.SOURCE.name())) {
+                template = loadText(CamelKafkaConnectorUpdateMojo.class.getClassLoader().getResourceAsStream("camel-kafka-connector-source-options.mvel"));
+            }
+            String out = (String)TemplateRuntime.eval(template, model, Collections.singletonMap("util", MvelHelper.INSTANCE));
+            return out;
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error processing mvel template. Reason: " + e, e);
+        }
+    }
+
+    private boolean updateAutoConfigureOptions(File file, String changed) throws MojoExecutionException {
+        try {
+            if (!file.exists()) {
+                // include markers for new files
+                changed = "// kafka-connector options: START\n" + changed + "\n// kafka-connector options: END\n";
+                writeText(file, changed);
+                return true;
+            }
+
+            String text = loadText(new FileInputStream(file));
+
+            String existing = Strings.between(text, "// kafka-connector options: START", "// kafka-connector options: END");
+            if (existing != null) {
+                // remove leading line breaks etc
+                existing = existing.trim();
+                changed = changed.trim();
+                if (existing.equals(changed)) {
+                    return false;
+                } else {
+                    String before = Strings.before(text, "// kafka-connector options: START");
+                    String after = Strings.after(text, "// kafka-connector options: END");
+                    text = before + "// kafka-connector options: START\n" + changed + "\n// kafka-connector options: END" + after;
+                    writeText(file, text);
+                    return true;
+                }
+            } else {
+                getLog().warn("Cannot find markers in file " + file);
+                getLog().warn("Add the following markers");
+                getLog().warn("\t// kafka-connector options: START");
+                getLog().warn("\t// kafka-connector options: END");
+                return false;
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error reading file " + file + " Reason: " + e, e);
+        }
     }
 
     private enum ConnectorType {
-        SINK,
-        SOURCE
+        SINK, SOURCE
     }
 }
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java
index 539fe42..bacf84f 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java
@@ -67,6 +67,9 @@
     private static final String GENERATED_SECTION_END = "END OF GENERATED CODE";
     private static final String GENERATED_SECTION_END_COMMENT = "<!--" + GENERATED_SECTION_END + "-->";
 
+    @Parameter(property = "overridePomFile", required = false, defaultValue = "false")
+    protected Boolean overridePomFile;
+
     /**
      * The maven session.
      */
@@ -129,7 +132,8 @@
                             element(name("noticeTemplate"), noticeTemplate),
                             element(name("licenseTemplate"), licenseTemplate),
                             element(name("fixDependenciesProperties"), fixDependenciesProperties),
-                            element(name("packageFileTemplate"), packageFileTemplate)
+                            element(name("packageFileTemplate"), packageFileTemplate),
+                            element(name("overridePomFile"), overridePomFile.toString())
                     ),
                     executionEnvironment(
                             project,
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/dto/CamelKafkaConnectorModel.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/dto/CamelKafkaConnectorModel.java
new file mode 100644
index 0000000..3b8b522
--- /dev/null
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/dto/CamelKafkaConnectorModel.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kafkaconnector.maven.dto;
+
+import java.util.List;
+
+public class CamelKafkaConnectorModel {
+    private String groupId;
+    private String artifactId;
+    private String version;
+    private String title;
+    private List<CamelKafkaConnectorOptionModel> options;
+
+    public List<CamelKafkaConnectorOptionModel> getOptions() {
+        return options;
+    }
+
+    public void setOptions(List<CamelKafkaConnectorOptionModel> options) {
+        this.options = options;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    public void setArtifactId(String artifactId) {
+        this.artifactId = artifactId;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+}
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/dto/CamelKafkaConnectorOptionModel.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/dto/CamelKafkaConnectorOptionModel.java
new file mode 100644
index 0000000..069ad66
--- /dev/null
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/dto/CamelKafkaConnectorOptionModel.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.kafkaconnector.maven.dto;
+
+import org.apache.camel.tooling.model.Strings;
+
+public class CamelKafkaConnectorOptionModel {
+
+    private String description;
+    private String priority;
+    private String name;
+    private String defaultValue;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPriority() {
+        return priority;
+    }
+
+    public void setPriority(String priority) {
+        this.priority = priority;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    public void setDefaultValue(String defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+
+    public String getShortName(int watermark) {
+        String text = Strings.wrapCamelCaseWords(name, watermark, " ");
+        // ensure the option name starts with lower-case
+        return Character.toLowerCase(text.charAt(0)) + text.substring(1);
+    }
+}
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/utils/MavenUtils.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/utils/MavenUtils.java
index 7b999c2..c3aed14 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/utils/MavenUtils.java
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/utils/MavenUtils.java
@@ -190,7 +190,8 @@
                 String[] comps = dep.split("\\:");
                 String groupIdStr = comps[0];
                 String artifactIdStr = comps[1];
-                String versionStr = comps.length > 2 ? comps[2] : null;
+                String versionStr = comps.length > 2 && !comps[2].isEmpty() ? comps[2] : null;
+                String scopeStr = comps.length > 3 ? comps[3] : null;
 
                 Element groupId = pom.createElement("groupId");
                 groupId.setTextContent(groupIdStr);
@@ -206,6 +207,12 @@
                     dependency.appendChild(version);
                 }
 
+                if (scopeStr != null) {
+                    Element scope = pom.createElement("scope");
+                    scope.setTextContent(scopeStr);
+                    dependency.appendChild(scope);
+                }
+
             }
             dependencies.appendChild(pom.createComment(generatedSectionStopMarker));
         }
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connecotr-template-package.template b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connecotr-template-package.template
index 3de90d9..ca874a2 100644
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connecotr-template-package.template
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connecotr-template-package.template
@@ -24,13 +24,14 @@
   <!-- Assembles a packaged version targeting OS installation. -->
   <id>package</id>
   <formats>
-    <format>dir</format>
+    <format>zip</format>
+    <format>tar.gz</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory><#noparse>${project.basedir}/../..</#noparse></directory>
-      <outputDirectory><#noparse>share/doc/${project.artifactId}/</#noparse></outputDirectory>
+      <outputDirectory><#noparse>${project.artifactId}/</#noparse></outputDirectory>
       <includes>
         <include>README*</include>
         <include>LICENSE*</include>
@@ -48,7 +49,7 @@
   </fileSets>
   <dependencySets>
     <dependencySet>
-      <outputDirectory><#noparse>share/java/${project.artifactId}</#noparse></outputDirectory>
+      <outputDirectory><#noparse>${project.artifactId}/</#noparse></outputDirectory>
       <useProjectArtifact>true</useProjectArtifact>
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <excludes>
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-sink-options.mvel b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-sink-options.mvel
new file mode 100644
index 0000000..1fbc4bc
--- /dev/null
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-sink-options.mvel
@@ -0,0 +1,28 @@
+[[@{title}-kafka-connector-sink]]
+= @{title}-kafka-connector sink configuration
+
+When using @{title}-kafka-connector as sink make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>@{groupId}.kafkaconnector</groupId>
+  <artifactId>@{artifactId}-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+@if{options.isEmpty()}
+The @{title} sink connector has no options.
+@else{}
+The @{title} sink connector supports @{options.size()} options, which are listed below.
+@end{}
+
+@if{!options.isEmpty()}
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+@foreach{row : options}| *@{row.getShortName(50)}* | @{util.escape(row.description)} | @{row.defaultValue} | @{row.priority}
+@end{}|===
+@end{}
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-source-options.mvel b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-source-options.mvel
new file mode 100644
index 0000000..382074a
--- /dev/null
+++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-source-options.mvel
@@ -0,0 +1,28 @@
+[[@{title}-kafka-connector-source]]
+= @{title}-kafka-connector source configuration
+
+When using @{title}-kafka-connector as source make sure to use the following Maven dependency to have support for the connector:
+
+[source,xml]
+----
+<dependency>
+  <groupId>@{groupId}.kafkaconnector</groupId>
+  <artifactId>@{artifactId}-kafka-connector</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel Kafka connector version -->
+</dependency>
+----
+
+@if{options.isEmpty()}
+The @{title} source connector has no options.
+@else{}
+The @{title} source connector supports @{options.size()} options, which are listed below.
+@end{}
+
+@if{!options.isEmpty()}
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Priority
+@foreach{row : options}| *@{row.getShortName(50)}* | @{util.escape(row.description)} | @{row.defaultValue} | @{row.priority}
+@end{}|===
+@end{}
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/spring-boot-auto-configure-options.mvel b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/spring-boot-auto-configure-options.mvel
deleted file mode 100644
index 23366cf..0000000
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/spring-boot-auto-configure-options.mvel
+++ /dev/null
@@ -1,27 +0,0 @@
-== Spring Boot Auto-Configuration
-
-When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
-
-[source,xml]
-----
-<dependency>
-  <groupId>@{groupId}</groupId>
-  <artifactId>@{artifactId}</artifactId>
-  <version>x.x.x</version>
-  <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-@if{options.isEmpty()}
-The component has no Spring Boot auto configuration options.
-@else{}
-The component supports @{options.size()} options, which are listed below.
-@end{}
-
-@if{!options.isEmpty()}
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-@foreach{row : options}| *@{row.name}* | @{util.escape(row.description)} | @{row.getShortDefaultValue(20)} | @{row.getShortJavaType()}
-@end{}|===
-@end{}
diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/spring-boot-starter-template-spring.provides b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/spring-boot-starter-template-spring.provides
deleted file mode 100644
index 1e8cf5e..0000000
--- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/spring-boot-starter-template-spring.provides
+++ /dev/null
@@ -1,17 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-provides: ${artifactId}
diff --git a/tooling/pom.xml b/tooling/pom.xml
index c3b1beb..ff86104 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.camel.kafkaconnector</groupId>
         <artifactId>parent</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
+        <version>0.2.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
